Rachel Bowers | May 11, 2021
Final project for UEP239: Geospatial Programming with Python
Extreme heat can be a public health risk, especially to vulnerable populations like young children, elderly, and low-income individuals. Climate change and urbanization are increasing the frequency and, in some areas, the intensity of extreme heat events. This analysis uses Python to provide a spatial understanding for which Boston Metropolitan area communities (defined as Zip Code Tabulation Areas (ZCTAs) within the Boston Region Metropolitan Planning Organization (MPO) boundary) are most vulnerable to extreme heat events.
Amongst other characteristics, areas with high land surface temperature, low vegetation, highly vulnerable populations, and limited access to urgent care hospitals are particularly at risk of the health issues associated with extreme heat exposure (Reid Colleen E. et al. 2009). To capture these characteristics, this analysis defines extreme heat vulnerability based on the following indicators:
First, import dependencies
import rasterio
from rasterio.plot import show
from rasterio import features
from rasterio import plot
import numpy as np
import pandas as pd
import geopandas as gpd
import matplotlib.pyplot as plt
from rasterstats import zonal_stats
import contextily as cx
import folium
import matplotlib.image as mpimg # For plotting image (raster) data
import mapclassify
%matplotlib inline
pd.set_option('max_columns', None)
Clip ZCTA polygons to the MPO boundary
#read in boundary shapefiles
zcta = gpd.read_file('data/tl_2010_25_zcta510/tl_2010_25_zcta510.shp')
mpo = gpd.read_file('data/MPO_Boundaries/MPO_Boundaries.shp')
mass_outline = gpd.read_file('data/OUTLINE25K_POLY/OUTLINE25K_POLY.shp')
#project to Mass Mainland CRS, then check to make sure CRS are the same
zcta = zcta.to_crs('epsg:6491')
mpo = mpo.to_crs('epsg:6491')
mass_outline = mass_outline.to_crs('epsg:6491')
zcta.crs == mpo.crs == mass_outline.crs #are CRS the same for the ZCTA, MPO, and Mass boundary?
True
#clip ZCTA to MA detailed coastline
zcta = gpd.clip(zcta, mass_outline).copy()
zcta.plot()
<AxesSubplot:>
#list of MPOs in Massachusetts
mpo.MPO.unique()
array(['Berkshire', 'Cape Cod', 'Central Massachusetts', 'Franklin',
'Montachusett', "Martha's Vineyard", 'Merrimack Valley',
'Northern Middlesex', 'Nantucket', 'Pioneer Valley',
'Boston Region', 'Old Colony', 'Southeastern Massachusetts'],
dtype=object)
#extract only the Boston MPO region
boston_mpo = mpo[mpo['MPO']=='Boston Region'].copy()
#Plot the Boston MPO over the zip codes
fig, ax = plt.subplots(figsize=(8, 6))
zcta.plot(alpha=1,
color="white",
edgecolor="grey",
ax=ax)
boston_mpo.plot(color='blue', ax=ax, alpha=.5)
<AxesSubplot:>
#clip ZCTAs by extracting only ZCTAs with centroids that are within the Boston MPO region
zcta_boston = zcta[zcta.centroid.within(boston_mpo['geometry'][10])].copy()
#plot Boston S
zcta_boston.plot()
<AxesSubplot:>
#look at what information is included in geodataframe
zcta_boston.head()
| STATEFP10 | ZCTA5CE10 | GEOID10 | CLASSFP10 | MTFCC10 | FUNCSTAT10 | ALAND10 | AWATER10 | INTPTLAT10 | INTPTLON10 | PARTFLG10 | geometry | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 17 | 25 | 01905 | 2501905 | B5 | G6350 | S | 9219345 | 1195154 | +42.4659985 | -070.9757922 | N | MULTIPOLYGON (((243877.753 913824.638, 243872.... |
| 18 | 25 | 01904 | 2501904 | B5 | G6350 | S | 11708211 | 1303900 | +42.4924563 | -070.9739297 | N | POLYGON ((245700.484 914778.700, 245667.412 91... |
| 21 | 25 | 01915 | 2501915 | B5 | G6350 | S | 39091336 | 3958118 | +42.5702688 | -070.8669962 | N | MULTIPOLYGON (((250787.714 926889.372, 251155.... |
| 35 | 25 | 02462 | 2502462 | B5 | G6350 | S | 1369318 | 69749 | +42.3287076 | -071.2559002 | N | MULTIPOLYGON (((222058.060 897313.471, 222020.... |
| 37 | 25 | 01760 | 2501760 | B5 | G6350 | S | 38359306 | 2599042 | +42.2848223 | -071.3488109 | N | POLYGON ((208131.535 893134.452, 208128.879 89... |
#look at datatypes and other information about the geodataframe
zcta_boston.info()
<class 'geopandas.geodataframe.GeoDataFrame'> Int64Index: 164 entries, 17 to 529 Data columns (total 12 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 STATEFP10 164 non-null object 1 ZCTA5CE10 164 non-null object 2 GEOID10 164 non-null object 3 CLASSFP10 164 non-null object 4 MTFCC10 164 non-null object 5 FUNCSTAT10 164 non-null object 6 ALAND10 164 non-null int64 7 AWATER10 164 non-null int64 8 INTPTLAT10 164 non-null object 9 INTPTLON10 164 non-null object 10 PARTFLG10 164 non-null object 11 geometry 164 non-null geometry dtypes: geometry(1), int64(2), object(9) memory usage: 16.7+ KB
There are 164 ZCTAs in the Boston MPO region.
#for contextualizing results, add zip codes and city/town names
#add a zero in front of ZCTA code to get zip code value (for labelling interactive map)
zcta_boston['zip_code'] = zcta_boston['ZCTA5CE10'].apply(lambda x: '{0:0>5}'.format(x))
zcta_boston.head(3)
#read in CSV that has town and neighborhood names associated with zip codes (note this is not official census data) (source = MassGIS)
zipcode = gpd.read_file('data/ZipCodes_NT_POLY/ZIPCODES_NT_POLY.shp').rename(columns={'POSTCODE': 'zip_code'}).drop(['geometry'], axis = 1)
zipcode['PC_NAME'] = zipcode['PC_NAME'].str.title()
zipcode['COUNTY'] = zipcode['COUNTY'].str.title()
zipcode.head()
zcta_boston = zcta_boston.merge(
zipcode,
on='zip_code',
how='left')
zcta_boston.head(3)
| STATEFP10 | ZCTA5CE10 | GEOID10 | CLASSFP10 | MTFCC10 | FUNCSTAT10 | ALAND10 | AWATER10 | INTPTLAT10 | INTPTLON10 | PARTFLG10 | geometry | zip_code | PC_NAME | PC_TYPE | PA_NAME | PA_FIPS | CITY_TOWN | COUNTY | AREA_SQMI | SHAPE_AREA | SHAPE_LEN | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 25 | 01905 | 2501905 | B5 | G6350 | S | 9219345 | 1195154 | +42.4659985 | -070.9757922 | N | MULTIPOLYGON (((243877.753 913824.638, 243872.... | 01905 | Lynn | NON UNIQUE | LYNN | 37490 | LYNN | Essex | 4.865583 | 1.260180e+07 | 23492.880715 |
| 1 | 25 | 01904 | 2501904 | B5 | G6350 | S | 11708211 | 1303900 | +42.4924563 | -070.9739297 | N | POLYGON ((245700.484 914778.700, 245667.412 91... | 01904 | Lynn | NON UNIQUE | LYNN | 37490 | LYNN | Essex | 4.228883 | 1.095276e+07 | 22465.853752 |
| 2 | 25 | 01915 | 2501915 | B5 | G6350 | S | 39091336 | 3958118 | +42.5702688 | -070.8669962 | N | MULTIPOLYGON (((250787.714 926889.372, 251155.... | 01915 | Beverly | NON UNIQUE | BEVERLY | 05595 | BEVERLY | Essex | 14.765718 | 3.824303e+07 | 50712.083048 |
Young and old individuals are more vulnerable to the health impacts associated with extreme heat exposure (Reid Colleen E. et al. 2009). To capture this, I used census data to calculate percentages of populations under the age of 5 and over the age of 65 in Boston area ZCTAs.
#read in age CSV
age = pd.read_csv("data/ACSST5Y2019.S0101/ACSST5Y2019.S0101_data_with_overlays.csv")
age.head()
| GEO_ID | NAME | S0101_C01_001E | S0101_C01_001M | S0101_C01_002E | S0101_C01_002M | S0101_C01_003E | S0101_C01_003M | S0101_C01_004E | S0101_C01_004M | S0101_C01_005E | S0101_C01_005M | S0101_C01_006E | S0101_C01_006M | S0101_C01_007E | S0101_C01_007M | S0101_C01_008E | S0101_C01_008M | S0101_C01_009E | S0101_C01_009M | S0101_C01_010E | S0101_C01_010M | S0101_C01_011E | S0101_C01_011M | S0101_C01_012E | S0101_C01_012M | S0101_C01_013E | S0101_C01_013M | S0101_C01_014E | S0101_C01_014M | S0101_C01_015E | S0101_C01_015M | S0101_C01_016E | S0101_C01_016M | S0101_C01_017E | S0101_C01_017M | S0101_C01_018E | S0101_C01_018M | S0101_C01_019E | S0101_C01_019M | S0101_C01_020E | S0101_C01_020M | S0101_C01_021E | S0101_C01_021M | S0101_C01_022E | S0101_C01_022M | S0101_C01_023E | S0101_C01_023M | S0101_C01_024E | S0101_C01_024M | S0101_C01_025E | S0101_C01_025M | S0101_C01_026E | S0101_C01_026M | S0101_C01_027E | S0101_C01_027M | S0101_C01_028E | S0101_C01_028M | S0101_C01_029E | S0101_C01_029M | S0101_C01_030E | S0101_C01_030M | S0101_C01_031E | S0101_C01_031M | S0101_C01_032E | S0101_C01_032M | S0101_C01_033E | S0101_C01_033M | S0101_C01_034E | S0101_C01_034M | S0101_C01_035E | S0101_C01_035M | S0101_C01_036E | S0101_C01_036M | S0101_C01_037E | S0101_C01_037M | S0101_C01_038E | S0101_C01_038M | S0101_C02_001E | S0101_C02_001M | S0101_C02_002E | S0101_C02_002M | S0101_C02_003E | S0101_C02_003M | S0101_C02_004E | S0101_C02_004M | S0101_C02_005E | S0101_C02_005M | S0101_C02_006E | S0101_C02_006M | S0101_C02_007E | S0101_C02_007M | S0101_C02_008E | S0101_C02_008M | S0101_C02_009E | S0101_C02_009M | S0101_C02_010E | S0101_C02_010M | S0101_C02_011E | S0101_C02_011M | S0101_C02_012E | S0101_C02_012M | S0101_C02_013E | S0101_C02_013M | S0101_C02_014E | S0101_C02_014M | S0101_C02_015E | S0101_C02_015M | S0101_C02_016E | S0101_C02_016M | S0101_C02_017E | S0101_C02_017M | S0101_C02_018E | S0101_C02_018M | S0101_C02_019E | S0101_C02_019M | S0101_C02_020E | S0101_C02_020M | S0101_C02_021E | S0101_C02_021M | S0101_C02_022E | S0101_C02_022M | S0101_C02_023E | S0101_C02_023M | S0101_C02_024E | S0101_C02_024M | S0101_C02_025E | S0101_C02_025M | S0101_C02_026E | S0101_C02_026M | S0101_C02_027E | S0101_C02_027M | S0101_C02_028E | S0101_C02_028M | S0101_C02_029E | S0101_C02_029M | S0101_C02_030E | S0101_C02_030M | S0101_C02_031E | S0101_C02_031M | S0101_C02_032E | S0101_C02_032M | S0101_C02_033E | S0101_C02_033M | S0101_C02_034E | S0101_C02_034M | S0101_C02_035E | S0101_C02_035M | S0101_C02_036E | S0101_C02_036M | S0101_C02_037E | S0101_C02_037M | S0101_C02_038E | S0101_C02_038M | S0101_C03_001E | S0101_C03_001M | S0101_C03_002E | S0101_C03_002M | S0101_C03_003E | S0101_C03_003M | S0101_C03_004E | S0101_C03_004M | S0101_C03_005E | S0101_C03_005M | S0101_C03_006E | S0101_C03_006M | S0101_C03_007E | S0101_C03_007M | S0101_C03_008E | S0101_C03_008M | S0101_C03_009E | S0101_C03_009M | S0101_C03_010E | S0101_C03_010M | S0101_C03_011E | S0101_C03_011M | S0101_C03_012E | S0101_C03_012M | S0101_C03_013E | S0101_C03_013M | S0101_C03_014E | S0101_C03_014M | S0101_C03_015E | S0101_C03_015M | S0101_C03_016E | S0101_C03_016M | S0101_C03_017E | S0101_C03_017M | S0101_C03_018E | S0101_C03_018M | S0101_C03_019E | S0101_C03_019M | S0101_C03_020E | S0101_C03_020M | S0101_C03_021E | S0101_C03_021M | S0101_C03_022E | S0101_C03_022M | S0101_C03_023E | S0101_C03_023M | S0101_C03_024E | S0101_C03_024M | S0101_C03_025E | S0101_C03_025M | S0101_C03_026E | S0101_C03_026M | S0101_C03_027E | S0101_C03_027M | S0101_C03_028E | S0101_C03_028M | S0101_C03_029E | S0101_C03_029M | S0101_C03_030E | S0101_C03_030M | S0101_C03_031E | S0101_C03_031M | S0101_C03_032E | S0101_C03_032M | S0101_C03_033E | S0101_C03_033M | S0101_C03_034E | S0101_C03_034M | S0101_C03_035E | S0101_C03_035M | S0101_C03_036E | S0101_C03_036M | S0101_C03_037E | S0101_C03_037M | S0101_C03_038E | S0101_C03_038M | S0101_C04_001E | S0101_C04_001M | S0101_C04_002E | S0101_C04_002M | S0101_C04_003E | S0101_C04_003M | S0101_C04_004E | S0101_C04_004M | S0101_C04_005E | S0101_C04_005M | S0101_C04_006E | S0101_C04_006M | S0101_C04_007E | S0101_C04_007M | S0101_C04_008E | S0101_C04_008M | S0101_C04_009E | S0101_C04_009M | S0101_C04_010E | S0101_C04_010M | S0101_C04_011E | S0101_C04_011M | S0101_C04_012E | S0101_C04_012M | S0101_C04_013E | S0101_C04_013M | S0101_C04_014E | S0101_C04_014M | S0101_C04_015E | S0101_C04_015M | S0101_C04_016E | S0101_C04_016M | S0101_C04_017E | S0101_C04_017M | S0101_C04_018E | S0101_C04_018M | S0101_C04_019E | S0101_C04_019M | S0101_C04_020E | S0101_C04_020M | S0101_C04_021E | S0101_C04_021M | S0101_C04_022E | S0101_C04_022M | S0101_C04_023E | S0101_C04_023M | S0101_C04_024E | S0101_C04_024M | S0101_C04_025E | S0101_C04_025M | S0101_C04_026E | S0101_C04_026M | S0101_C04_027E | S0101_C04_027M | S0101_C04_028E | S0101_C04_028M | S0101_C04_029E | S0101_C04_029M | S0101_C04_030E | S0101_C04_030M | S0101_C04_031E | S0101_C04_031M | S0101_C04_032E | S0101_C04_032M | S0101_C04_033E | S0101_C04_033M | S0101_C04_034E | S0101_C04_034M | S0101_C04_035E | S0101_C04_035M | S0101_C04_036E | S0101_C04_036M | S0101_C04_037E | S0101_C04_037M | S0101_C04_038E | S0101_C04_038M | S0101_C05_001E | S0101_C05_001M | S0101_C05_002E | S0101_C05_002M | S0101_C05_003E | S0101_C05_003M | S0101_C05_004E | S0101_C05_004M | S0101_C05_005E | S0101_C05_005M | S0101_C05_006E | S0101_C05_006M | S0101_C05_007E | S0101_C05_007M | S0101_C05_008E | S0101_C05_008M | S0101_C05_009E | S0101_C05_009M | S0101_C05_010E | S0101_C05_010M | S0101_C05_011E | S0101_C05_011M | S0101_C05_012E | S0101_C05_012M | S0101_C05_013E | S0101_C05_013M | S0101_C05_014E | S0101_C05_014M | S0101_C05_015E | S0101_C05_015M | S0101_C05_016E | S0101_C05_016M | S0101_C05_017E | S0101_C05_017M | S0101_C05_018E | S0101_C05_018M | S0101_C05_019E | S0101_C05_019M | S0101_C05_020E | S0101_C05_020M | S0101_C05_021E | S0101_C05_021M | S0101_C05_022E | S0101_C05_022M | S0101_C05_023E | S0101_C05_023M | S0101_C05_024E | S0101_C05_024M | S0101_C05_025E | S0101_C05_025M | S0101_C05_026E | S0101_C05_026M | S0101_C05_027E | S0101_C05_027M | S0101_C05_028E | S0101_C05_028M | S0101_C05_029E | S0101_C05_029M | S0101_C05_030E | S0101_C05_030M | S0101_C05_031E | S0101_C05_031M | S0101_C05_032E | S0101_C05_032M | S0101_C05_033E | S0101_C05_033M | S0101_C05_034E | S0101_C05_034M | S0101_C05_035E | S0101_C05_035M | S0101_C05_036E | S0101_C05_036M | S0101_C05_037E | S0101_C05_037M | S0101_C05_038E | S0101_C05_038M | S0101_C06_001E | S0101_C06_001M | S0101_C06_002E | S0101_C06_002M | S0101_C06_003E | S0101_C06_003M | S0101_C06_004E | S0101_C06_004M | S0101_C06_005E | S0101_C06_005M | S0101_C06_006E | S0101_C06_006M | S0101_C06_007E | S0101_C06_007M | S0101_C06_008E | S0101_C06_008M | S0101_C06_009E | S0101_C06_009M | S0101_C06_010E | S0101_C06_010M | S0101_C06_011E | S0101_C06_011M | S0101_C06_012E | S0101_C06_012M | S0101_C06_013E | S0101_C06_013M | S0101_C06_014E | S0101_C06_014M | S0101_C06_015E | S0101_C06_015M | S0101_C06_016E | S0101_C06_016M | S0101_C06_017E | S0101_C06_017M | S0101_C06_018E | S0101_C06_018M | S0101_C06_019E | S0101_C06_019M | S0101_C06_020E | S0101_C06_020M | S0101_C06_021E | S0101_C06_021M | S0101_C06_022E | S0101_C06_022M | S0101_C06_023E | S0101_C06_023M | S0101_C06_024E | S0101_C06_024M | S0101_C06_025E | S0101_C06_025M | S0101_C06_026E | S0101_C06_026M | S0101_C06_027E | S0101_C06_027M | S0101_C06_028E | S0101_C06_028M | S0101_C06_029E | S0101_C06_029M | S0101_C06_030E | S0101_C06_030M | S0101_C06_031E | S0101_C06_031M | S0101_C06_032E | S0101_C06_032M | S0101_C06_033E | S0101_C06_033M | S0101_C06_034E | S0101_C06_034M | S0101_C06_035E | S0101_C06_035M | S0101_C06_036E | S0101_C06_036M | S0101_C06_037E | S0101_C06_037M | S0101_C06_038E | S0101_C06_038M | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | id | Geographic Area Name | Estimate!!Total!!Total population | Margin of Error!!Total!!Total population | Estimate!!Total!!Total population!!AGE!!Under ... | Margin of Error!!Total!!Total population!!AGE!... | Estimate!!Total!!Total population!!AGE!!5 to 9... | Margin of Error!!Total!!Total population!!AGE!... | Estimate!!Total!!Total population!!AGE!!10 to ... | Margin of Error!!Total!!Total population!!AGE!... | Estimate!!Total!!Total population!!AGE!!15 to ... | Margin of Error!!Total!!Total population!!AGE!... | Estimate!!Total!!Total population!!AGE!!20 to ... | Margin of Error!!Total!!Total population!!AGE!... | Estimate!!Total!!Total population!!AGE!!25 to ... | Margin of Error!!Total!!Total population!!AGE!... | Estimate!!Total!!Total population!!AGE!!30 to ... | Margin of Error!!Total!!Total population!!AGE!... | Estimate!!Total!!Total population!!AGE!!35 to ... | Margin of Error!!Total!!Total population!!AGE!... | Estimate!!Total!!Total population!!AGE!!40 to ... | Margin of Error!!Total!!Total population!!AGE!... | Estimate!!Total!!Total population!!AGE!!45 to ... | Margin of Error!!Total!!Total population!!AGE!... | Estimate!!Total!!Total population!!AGE!!50 to ... | Margin of Error!!Total!!Total population!!AGE!... | Estimate!!Total!!Total population!!AGE!!55 to ... | Margin of Error!!Total!!Total population!!AGE!... | Estimate!!Total!!Total population!!AGE!!60 to ... | Margin of Error!!Total!!Total population!!AGE!... | Estimate!!Total!!Total population!!AGE!!65 to ... | Margin of Error!!Total!!Total population!!AGE!... | Estimate!!Total!!Total population!!AGE!!70 to ... | Margin of Error!!Total!!Total population!!AGE!... | Estimate!!Total!!Total population!!AGE!!75 to ... | Margin of Error!!Total!!Total population!!AGE!... | Estimate!!Total!!Total population!!AGE!!80 to ... | Margin of Error!!Total!!Total population!!AGE!... | Estimate!!Total!!Total population!!AGE!!85 yea... | Margin of Error!!Total!!Total population!!AGE!... | Estimate!!Total!!Total population!!SELECTED AG... | Margin of Error!!Total!!Total population!!SELE... | Estimate!!Total!!Total population!!SELECTED AG... | Margin of Error!!Total!!Total population!!SELE... | Estimate!!Total!!Total population!!SELECTED AG... | Margin of Error!!Total!!Total population!!SELE... | Estimate!!Total!!Total population!!SELECTED AG... | Margin of Error!!Total!!Total population!!SELE... | Estimate!!Total!!Total population!!SELECTED AG... | Margin of Error!!Total!!Total population!!SELE... | Estimate!!Total!!Total population!!SELECTED AG... | Margin of Error!!Total!!Total population!!SELE... | Estimate!!Total!!Total population!!SELECTED AG... | Margin of Error!!Total!!Total population!!SELE... | Estimate!!Total!!Total population!!SELECTED AG... | Margin of Error!!Total!!Total population!!SELE... | Estimate!!Total!!Total population!!SELECTED AG... | Margin of Error!!Total!!Total population!!SELE... | Estimate!!Total!!Total population!!SELECTED AG... | Margin of Error!!Total!!Total population!!SELE... | Estimate!!Total!!Total population!!SELECTED AG... | Margin of Error!!Total!!Total population!!SELE... | Estimate!!Total!!Total population!!SELECTED AG... | Margin of Error!!Total!!Total population!!SELE... | Estimate!!Total!!Total population!!SUMMARY IND... | Margin of Error!!Total!!Total population!!SUMM... | Estimate!!Total!!Total population!!SUMMARY IND... | Margin of Error!!Total!!Total population!!SUMM... | Estimate!!Total!!Total population!!SUMMARY IND... | Margin of Error!!Total!!Total population!!SUMM... | Estimate!!Total!!Total population!!SUMMARY IND... | Margin of Error!!Total!!Total population!!SUMM... | Estimate!!Total!!Total population!!SUMMARY IND... | Margin of Error!!Total!!Total population!!SUMM... | Estimate!!Total!!Total population!!PERCENT ALL... | Margin of Error!!Total!!Total population!!PERC... | Estimate!!Total!!Total population!!PERCENT ALL... | Margin of Error!!Total!!Total population!!PERC... | Estimate!!Percent!!Total population | Margin of Error!!Percent!!Total population | Estimate!!Percent!!Total population!!AGE!!Unde... | Margin of Error!!Percent!!Total population!!AG... | Estimate!!Percent!!Total population!!AGE!!5 to... | Margin of Error!!Percent!!Total population!!AG... | Estimate!!Percent!!Total population!!AGE!!10 t... | Margin of Error!!Percent!!Total population!!AG... | Estimate!!Percent!!Total population!!AGE!!15 t... | Margin of Error!!Percent!!Total population!!AG... | Estimate!!Percent!!Total population!!AGE!!20 t... | Margin of Error!!Percent!!Total population!!AG... | Estimate!!Percent!!Total population!!AGE!!25 t... | Margin of Error!!Percent!!Total population!!AG... | Estimate!!Percent!!Total population!!AGE!!30 t... | Margin of Error!!Percent!!Total population!!AG... | Estimate!!Percent!!Total population!!AGE!!35 t... | Margin of Error!!Percent!!Total population!!AG... | Estimate!!Percent!!Total population!!AGE!!40 t... | Margin of Error!!Percent!!Total population!!AG... | Estimate!!Percent!!Total population!!AGE!!45 t... | Margin of Error!!Percent!!Total population!!AG... | Estimate!!Percent!!Total population!!AGE!!50 t... | Margin of Error!!Percent!!Total population!!AG... | Estimate!!Percent!!Total population!!AGE!!55 t... | Margin of Error!!Percent!!Total population!!AG... | Estimate!!Percent!!Total population!!AGE!!60 t... | Margin of Error!!Percent!!Total population!!AG... | Estimate!!Percent!!Total population!!AGE!!65 t... | Margin of Error!!Percent!!Total population!!AG... | Estimate!!Percent!!Total population!!AGE!!70 t... | Margin of Error!!Percent!!Total population!!AG... | Estimate!!Percent!!Total population!!AGE!!75 t... | Margin of Error!!Percent!!Total population!!AG... | Estimate!!Percent!!Total population!!AGE!!80 t... | Margin of Error!!Percent!!Total population!!AG... | Estimate!!Percent!!Total population!!AGE!!85 y... | Margin of Error!!Percent!!Total population!!AG... | Estimate!!Percent!!Total population!!SELECTED ... | Margin of Error!!Percent!!Total population!!SE... | Estimate!!Percent!!Total population!!SELECTED ... | Margin of Error!!Percent!!Total population!!SE... | Estimate!!Percent!!Total population!!SELECTED ... | Margin of Error!!Percent!!Total population!!SE... | Estimate!!Percent!!Total population!!SELECTED ... | Margin of Error!!Percent!!Total population!!SE... | Estimate!!Percent!!Total population!!SELECTED ... | Margin of Error!!Percent!!Total population!!SE... | Estimate!!Percent!!Total population!!SELECTED ... | Margin of Error!!Percent!!Total population!!SE... | Estimate!!Percent!!Total population!!SELECTED ... | Margin of Error!!Percent!!Total population!!SE... | Estimate!!Percent!!Total population!!SELECTED ... | Margin of Error!!Percent!!Total population!!SE... | Estimate!!Percent!!Total population!!SELECTED ... | Margin of Error!!Percent!!Total population!!SE... | Estimate!!Percent!!Total population!!SELECTED ... | Margin of Error!!Percent!!Total population!!SE... | Estimate!!Percent!!Total population!!SELECTED ... | Margin of Error!!Percent!!Total population!!SE... | Estimate!!Percent!!Total population!!SELECTED ... | Margin of Error!!Percent!!Total population!!SE... | Estimate!!Percent!!Total population!!SUMMARY I... | Margin of Error!!Percent!!Total population!!SU... | Estimate!!Percent!!Total population!!SUMMARY I... | Margin of Error!!Percent!!Total population!!SU... | Estimate!!Percent!!Total population!!SUMMARY I... | Margin of Error!!Percent!!Total population!!SU... | Estimate!!Percent!!Total population!!SUMMARY I... | Margin of Error!!Percent!!Total population!!SU... | Estimate!!Percent!!Total population!!SUMMARY I... | Margin of Error!!Percent!!Total population!!SU... | Estimate!!Percent!!Total population!!PERCENT A... | Margin of Error!!Percent!!Total population!!PE... | Estimate!!Percent!!Total population!!PERCENT A... | Margin of Error!!Percent!!Total population!!PE... | Estimate!!Male!!Total population | Margin of Error!!Male!!Total population | Estimate!!Male!!Total population!!AGE!!Under 5... | Margin of Error!!Male!!Total population!!AGE!!... | Estimate!!Male!!Total population!!AGE!!5 to 9 ... | Margin of Error!!Male!!Total population!!AGE!!... | Estimate!!Male!!Total population!!AGE!!10 to 1... | Margin of Error!!Male!!Total population!!AGE!!... | Estimate!!Male!!Total population!!AGE!!15 to 1... | Margin of Error!!Male!!Total population!!AGE!!... | Estimate!!Male!!Total population!!AGE!!20 to 2... | Margin of Error!!Male!!Total population!!AGE!!... | Estimate!!Male!!Total population!!AGE!!25 to 2... | Margin of Error!!Male!!Total population!!AGE!!... | Estimate!!Male!!Total population!!AGE!!30 to 3... | Margin of Error!!Male!!Total population!!AGE!!... | Estimate!!Male!!Total population!!AGE!!35 to 3... | Margin of Error!!Male!!Total population!!AGE!!... | Estimate!!Male!!Total population!!AGE!!40 to 4... | Margin of Error!!Male!!Total population!!AGE!!... | Estimate!!Male!!Total population!!AGE!!45 to 4... | Margin of Error!!Male!!Total population!!AGE!!... | Estimate!!Male!!Total population!!AGE!!50 to 5... | Margin of Error!!Male!!Total population!!AGE!!... | Estimate!!Male!!Total population!!AGE!!55 to 5... | Margin of Error!!Male!!Total population!!AGE!!... | Estimate!!Male!!Total population!!AGE!!60 to 6... | Margin of Error!!Male!!Total population!!AGE!!... | Estimate!!Male!!Total population!!AGE!!65 to 6... | Margin of Error!!Male!!Total population!!AGE!!... | Estimate!!Male!!Total population!!AGE!!70 to 7... | Margin of Error!!Male!!Total population!!AGE!!... | Estimate!!Male!!Total population!!AGE!!75 to 7... | Margin of Error!!Male!!Total population!!AGE!!... | Estimate!!Male!!Total population!!AGE!!80 to 8... | Margin of Error!!Male!!Total population!!AGE!!... | Estimate!!Male!!Total population!!AGE!!85 year... | Margin of Error!!Male!!Total population!!AGE!!... | Estimate!!Male!!Total population!!SELECTED AGE... | Margin of Error!!Male!!Total population!!SELEC... | Estimate!!Male!!Total population!!SELECTED AGE... | Margin of Error!!Male!!Total population!!SELEC... | Estimate!!Male!!Total population!!SELECTED AGE... | Margin of Error!!Male!!Total population!!SELEC... | Estimate!!Male!!Total population!!SELECTED AGE... | Margin of Error!!Male!!Total population!!SELEC... | Estimate!!Male!!Total population!!SELECTED AGE... | Margin of Error!!Male!!Total population!!SELEC... | Estimate!!Male!!Total population!!SELECTED AGE... | Margin of Error!!Male!!Total population!!SELEC... | Estimate!!Male!!Total population!!SELECTED AGE... | Margin of Error!!Male!!Total population!!SELEC... | Estimate!!Male!!Total population!!SELECTED AGE... | Margin of Error!!Male!!Total population!!SELEC... | Estimate!!Male!!Total population!!SELECTED AGE... | Margin of Error!!Male!!Total population!!SELEC... | Estimate!!Male!!Total population!!SELECTED AGE... | Margin of Error!!Male!!Total population!!SELEC... | Estimate!!Male!!Total population!!SELECTED AGE... | Margin of Error!!Male!!Total population!!SELEC... | Estimate!!Male!!Total population!!SELECTED AGE... | Margin of Error!!Male!!Total population!!SELEC... | Estimate!!Male!!Total population!!SUMMARY INDI... | Margin of Error!!Male!!Total population!!SUMMA... | Estimate!!Male!!Total population!!SUMMARY INDI... | Margin of Error!!Male!!Total population!!SUMMA... | Estimate!!Male!!Total population!!SUMMARY INDI... | Margin of Error!!Male!!Total population!!SUMMA... | Estimate!!Male!!Total population!!SUMMARY INDI... | Margin of Error!!Male!!Total population!!SUMMA... | Estimate!!Male!!Total population!!SUMMARY INDI... | Margin of Error!!Male!!Total population!!SUMMA... | Estimate!!Male!!Total population!!PERCENT ALLO... | Margin of Error!!Male!!Total population!!PERCE... | Estimate!!Male!!Total population!!PERCENT ALLO... | Margin of Error!!Male!!Total population!!PERCE... | Estimate!!Percent Male!!Total population | Margin of Error!!Percent Male!!Total population | Estimate!!Percent Male!!Total population!!AGE!... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!AGE!... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!AGE!... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!AGE!... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!AGE!... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!AGE!... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!AGE!... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!AGE!... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!AGE!... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!AGE!... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!AGE!... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!AGE!... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!AGE!... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!AGE!... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!AGE!... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!AGE!... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!AGE!... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!AGE!... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!SELE... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!SELE... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!SELE... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!SELE... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!SELE... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!SELE... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!SELE... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!SELE... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!SELE... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!SELE... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!SELE... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!SELE... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!SUMM... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!SUMM... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!SUMM... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!SUMM... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!SUMM... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!PERC... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Percent Male!!Total population!!PERC... | Margin of Error!!Percent Male!!Total populatio... | Estimate!!Female!!Total population | Margin of Error!!Female!!Total population | Estimate!!Female!!Total population!!AGE!!Under... | Margin of Error!!Female!!Total population!!AGE... | Estimate!!Female!!Total population!!AGE!!5 to ... | Margin of Error!!Female!!Total population!!AGE... | Estimate!!Female!!Total population!!AGE!!10 to... | Margin of Error!!Female!!Total population!!AGE... | Estimate!!Female!!Total population!!AGE!!15 to... | Margin of Error!!Female!!Total population!!AGE... | Estimate!!Female!!Total population!!AGE!!20 to... | Margin of Error!!Female!!Total population!!AGE... | Estimate!!Female!!Total population!!AGE!!25 to... | Margin of Error!!Female!!Total population!!AGE... | Estimate!!Female!!Total population!!AGE!!30 to... | Margin of Error!!Female!!Total population!!AGE... | Estimate!!Female!!Total population!!AGE!!35 to... | Margin of Error!!Female!!Total population!!AGE... | Estimate!!Female!!Total population!!AGE!!40 to... | Margin of Error!!Female!!Total population!!AGE... | Estimate!!Female!!Total population!!AGE!!45 to... | Margin of Error!!Female!!Total population!!AGE... | Estimate!!Female!!Total population!!AGE!!50 to... | Margin of Error!!Female!!Total population!!AGE... | Estimate!!Female!!Total population!!AGE!!55 to... | Margin of Error!!Female!!Total population!!AGE... | Estimate!!Female!!Total population!!AGE!!60 to... | Margin of Error!!Female!!Total population!!AGE... | Estimate!!Female!!Total population!!AGE!!65 to... | Margin of Error!!Female!!Total population!!AGE... | Estimate!!Female!!Total population!!AGE!!70 to... | Margin of Error!!Female!!Total population!!AGE... | Estimate!!Female!!Total population!!AGE!!75 to... | Margin of Error!!Female!!Total population!!AGE... | Estimate!!Female!!Total population!!AGE!!80 to... | Margin of Error!!Female!!Total population!!AGE... | Estimate!!Female!!Total population!!AGE!!85 ye... | Margin of Error!!Female!!Total population!!AGE... | Estimate!!Female!!Total population!!SELECTED A... | Margin of Error!!Female!!Total population!!SEL... | Estimate!!Female!!Total population!!SELECTED A... | Margin of Error!!Female!!Total population!!SEL... | Estimate!!Female!!Total population!!SELECTED A... | Margin of Error!!Female!!Total population!!SEL... | Estimate!!Female!!Total population!!SELECTED A... | Margin of Error!!Female!!Total population!!SEL... | Estimate!!Female!!Total population!!SELECTED A... | Margin of Error!!Female!!Total population!!SEL... | Estimate!!Female!!Total population!!SELECTED A... | Margin of Error!!Female!!Total population!!SEL... | Estimate!!Female!!Total population!!SELECTED A... | Margin of Error!!Female!!Total population!!SEL... | Estimate!!Female!!Total population!!SELECTED A... | Margin of Error!!Female!!Total population!!SEL... | Estimate!!Female!!Total population!!SELECTED A... | Margin of Error!!Female!!Total population!!SEL... | Estimate!!Female!!Total population!!SELECTED A... | Margin of Error!!Female!!Total population!!SEL... | Estimate!!Female!!Total population!!SELECTED A... | Margin of Error!!Female!!Total population!!SEL... | Estimate!!Female!!Total population!!SELECTED A... | Margin of Error!!Female!!Total population!!SEL... | Estimate!!Female!!Total population!!SUMMARY IN... | Margin of Error!!Female!!Total population!!SUM... | Estimate!!Female!!Total population!!SUMMARY IN... | Margin of Error!!Female!!Total population!!SUM... | Estimate!!Female!!Total population!!SUMMARY IN... | Margin of Error!!Female!!Total population!!SUM... | Estimate!!Female!!Total population!!SUMMARY IN... | Margin of Error!!Female!!Total population!!SUM... | Estimate!!Female!!Total population!!SUMMARY IN... | Margin of Error!!Female!!Total population!!SUM... | Estimate!!Female!!Total population!!PERCENT AL... | Margin of Error!!Female!!Total population!!PER... | Estimate!!Female!!Total population!!PERCENT AL... | Margin of Error!!Female!!Total population!!PER... | Estimate!!Percent Female!!Total population | Margin of Error!!Percent Female!!Total population | Estimate!!Percent Female!!Total population!!AG... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!AG... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!AG... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!AG... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!AG... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!AG... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!AG... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!AG... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!AG... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!AG... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!AG... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!AG... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!AG... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!AG... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!AG... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!AG... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!AG... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!AG... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!SE... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!SE... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!SE... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!SE... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!SE... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!SE... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!SE... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!SE... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!SE... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!SE... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!SE... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!SE... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!SU... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!SU... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!SU... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!SU... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!SU... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!PE... | Margin of Error!!Percent Female!!Total populat... | Estimate!!Percent Female!!Total population!!PE... | Margin of Error!!Percent Female!!Total populat... |
| 1 | 8600000US01001 | ZCTA5 01001 | 17312 | 735 | 956 | 233 | 863 | 222 | 967 | 274 | 545 | 161 | 690 | 204 | 1101 | 262 | 1237 | 256 | 816 | 228 | 1214 | 273 | 994 | 261 | 1401 | 258 | 1265 | 239 | 1201 | 220 | 1016 | 224 | 1057 | 250 | 786 | 203 | 435 | 144 | 768 | 181 | 1830 | 310 | 381 | 129 | 3167 | 477 | 854 | 245 | 5603 | 522 | 14386 | 647 | 14145 | 648 | 13779 | 619 | 5263 | 428 | 4814 | 421 | 4062 | 378 | 1989 | 276 | 46.1 | 2.9 | 91.7 | 6.8 | 71.7 | 6.7 | 40.3 | 4.9 | 31.4 | 5.0 | (X) | (X) | (X) | (X) | (X) | (X) | 5.5 | 1.3 | 5.0 | 1.3 | 5.6 | 1.5 | 3.1 | 0.9 | 4.0 | 1.1 | 6.4 | 1.5 | 7.1 | 1.5 | 4.7 | 1.3 | 7.0 | 1.5 | 5.7 | 1.5 | 8.1 | 1.5 | 7.3 | 1.4 | 6.9 | 1.3 | 5.9 | 1.3 | 6.1 | 1.4 | 4.5 | 1.2 | 2.5 | 0.9 | 4.4 | 1.0 | 10.6 | 1.7 | 2.2 | 0.7 | 18.3 | 2.5 | 4.9 | 1.3 | 32.4 | 2.1 | 83.1 | 2.2 | 81.7 | 2.5 | 79.6 | 2.6 | 30.4 | 2.7 | 27.8 | 2.6 | 23.5 | 2.3 | 11.5 | 1.6 | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | 0.3 | (X) | 1.8 | (X) | 8283 | 524 | 537 | 153 | 364 | 149 | 600 | 228 | 387 | 160 | 327 | 136 | 598 | 186 | 475 | 156 | 452 | 174 | 638 | 198 | 379 | 129 | 803 | 194 | 441 | 126 | 694 | 156 | 405 | 155 | 462 | 157 | 319 | 121 | 212 | 111 | 190 | 105 | 964 | 247 | 287 | 128 | 1788 | 374 | 427 | 163 | 2877 | 376 | 6678 | 428 | 6495 | 427 | 6318 | 418 | 2282 | 274 | 2002 | 255 | 1588 | 245 | 721 | 183 | 43.3 | 2.6 | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | 6.5 | 1.8 | 4.4 | 1.8 | 7.2 | 2.6 | 4.7 | 1.8 | 3.9 | 1.6 | 7.2 | 2.2 | 5.7 | 1.9 | 5.5 | 2.1 | 7.7 | 2.3 | 4.6 | 1.5 | 9.7 | 2.3 | 5.3 | 1.6 | 8.4 | 1.9 | 4.9 | 1.9 | 5.6 | 2.0 | 3.9 | 1.5 | 2.6 | 1.4 | 2.3 | 1.3 | 11.6 | 2.7 | 3.5 | 1.5 | 21.6 | 3.9 | 5.2 | 1.9 | 34.7 | 3.4 | 80.6 | 3.2 | 78.4 | 3.9 | 76.3 | 4.1 | 27.6 | 3.6 | 24.2 | 3.3 | 19.2 | 3.1 | 8.7 | 2.2 | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | 9029 | 445 | 419 | 187 | 499 | 178 | 367 | 128 | 158 | 83 | 363 | 159 | 503 | 192 | 762 | 192 | 364 | 108 | 576 | 130 | 615 | 199 | 598 | 151 | 824 | 176 | 507 | 143 | 611 | 145 | 595 | 172 | 467 | 167 | 223 | 108 | 578 | 149 | 866 | 215 | 94 | 59 | 1379 | 275 | 427 | 170 | 2726 | 271 | 7708 | 406 | 7650 | 398 | 7461 | 371 | 2981 | 279 | 2812 | 280 | 2474 | 264 | 1268 | 213 | 48.9 | 3.2 | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | 4.6 | 2.0 | 5.5 | 1.9 | 4.1 | 1.4 | 1.7 | 0.9 | 4.0 | 1.7 | 5.6 | 2.1 | 8.4 | 2.2 | 4.0 | 1.2 | 6.4 | 1.4 | 6.8 | 2.1 | 6.6 | 1.6 | 9.1 | 2.0 | 5.6 | 1.6 | 6.8 | 1.6 | 6.6 | 1.9 | 5.2 | 1.8 | 2.5 | 1.2 | 6.4 | 1.6 | 9.6 | 2.3 | 1.0 | 0.7 | 15.3 | 2.8 | 4.7 | 1.8 | 30.2 | 2.6 | 85.4 | 2.8 | 84.7 | 2.8 | 82.6 | 2.8 | 33.0 | 3.0 | 31.1 | 2.9 | 27.4 | 2.7 | 14.0 | 2.3 | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) |
| 2 | 8600000US01002 | ZCTA5 01002 | 30014 | 485 | 872 | 143 | 1043 | 192 | 1123 | 215 | 4145 | 487 | 8762 | 777 | 2017 | 462 | 1348 | 309 | 1035 | 216 | 939 | 224 | 1005 | 223 | 1273 | 233 | 1234 | 225 | 1207 | 265 | 1172 | 187 | 1219 | 225 | 599 | 133 | 441 | 106 | 580 | 154 | 2166 | 237 | 730 | 155 | 3768 | 332 | 12177 | 866 | 18246 | 769 | 26656 | 498 | 26246 | 517 | 20197 | 819 | 5218 | 422 | 4754 | 392 | 4011 | 329 | 1620 | 215 | 23.4 | 0.8 | 92.9 | 8.0 | 35.0 | 2.7 | 18.0 | 1.8 | 16.9 | 1.7 | (X) | (X) | (X) | (X) | (X) | (X) | 2.9 | 0.5 | 3.5 | 0.6 | 3.7 | 0.7 | 13.8 | 1.6 | 29.2 | 2.5 | 6.7 | 1.5 | 4.5 | 1.0 | 3.4 | 0.7 | 3.1 | 0.8 | 3.3 | 0.7 | 4.2 | 0.8 | 4.1 | 0.7 | 4.0 | 0.9 | 3.9 | 0.6 | 4.1 | 0.7 | 2.0 | 0.4 | 1.5 | 0.4 | 1.9 | 0.5 | 7.2 | 0.8 | 2.4 | 0.5 | 12.6 | 1.1 | 40.6 | 2.8 | 60.8 | 2.2 | 88.8 | 1.0 | 87.4 | 1.1 | 67.3 | 2.5 | 17.4 | 1.4 | 15.8 | 1.3 | 13.4 | 1.1 | 5.4 | 0.7 | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | 0.2 | (X) | 1.7 | (X) | 14457 | 701 | 439 | 110 | 426 | 135 | 569 | 148 | 1970 | 338 | 4295 | 585 | 1084 | 382 | 762 | 228 | 493 | 123 | 428 | 122 | 472 | 137 | 632 | 136 | 561 | 125 | 502 | 131 | 657 | 143 | 575 | 147 | 292 | 86 | 123 | 56 | 177 | 74 | 995 | 183 | 431 | 127 | 1865 | 220 | 5834 | 639 | 9032 | 738 | 12850 | 687 | 12592 | 683 | 9934 | 755 | 2326 | 240 | 2119 | 230 | 1824 | 212 | 592 | 115 | 23.6 | 1.0 | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | 3.0 | 0.8 | 2.9 | 0.9 | 3.9 | 1.1 | 13.6 | 2.2 | 29.7 | 3.6 | 7.5 | 2.5 | 5.3 | 1.5 | 3.4 | 0.9 | 3.0 | 0.8 | 3.3 | 0.9 | 4.4 | 1.0 | 3.9 | 0.9 | 3.5 | 1.0 | 4.5 | 1.0 | 4.0 | 1.0 | 2.0 | 0.6 | 0.9 | 0.4 | 1.2 | 0.5 | 6.9 | 1.3 | 3.0 | 0.9 | 12.9 | 1.5 | 40.4 | 3.7 | 62.5 | 3.0 | 88.9 | 1.4 | 87.1 | 1.5 | 68.7 | 3.5 | 16.1 | 1.7 | 14.7 | 1.6 | 12.6 | 1.4 | 4.1 | 0.8 | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | 15557 | 663 | 433 | 117 | 617 | 149 | 554 | 126 | 2175 | 315 | 4467 | 567 | 933 | 256 | 586 | 147 | 542 | 142 | 511 | 149 | 533 | 137 | 641 | 151 | 673 | 145 | 705 | 178 | 515 | 117 | 644 | 143 | 307 | 101 | 318 | 98 | 403 | 134 | 1171 | 190 | 299 | 96 | 1903 | 241 | 6343 | 667 | 9214 | 645 | 13806 | 638 | 13654 | 642 | 10263 | 629 | 2892 | 280 | 2635 | 253 | 2187 | 237 | 1028 | 173 | 23.1 | 1.4 | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | 2.8 | 0.7 | 4.0 | 1.0 | 3.6 | 0.8 | 14.0 | 1.9 | 28.7 | 3.1 | 6.0 | 1.6 | 3.8 | 1.0 | 3.5 | 0.9 | 3.3 | 0.9 | 3.4 | 0.9 | 4.1 | 1.0 | 4.3 | 0.9 | 4.5 | 1.1 | 3.3 | 0.8 | 4.1 | 0.9 | 2.0 | 0.7 | 2.0 | 0.6 | 2.6 | 0.9 | 7.5 | 1.2 | 1.9 | 0.6 | 12.2 | 1.5 | 40.8 | 3.4 | 59.2 | 2.5 | 88.7 | 1.4 | 87.8 | 1.5 | 66.0 | 3.0 | 18.6 | 1.9 | 16.9 | 1.7 | 14.1 | 1.6 | 6.6 | 1.1 | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) |
| 3 | 8600000US01003 | ZCTA5 01003 | 11357 | 477 | 0 | 19 | 0 | 19 | 0 | 19 | 6008 | 530 | 5244 | 475 | 47 | 36 | 0 | 19 | 9 | 15 | 0 | 19 | 0 | 19 | 0 | 19 | 31 | 37 | 14 | 20 | 4 | 7 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 139 | 66 | 139 | 66 | 11113 | 478 | 11308 | 475 | 11357 | 477 | 11218 | 477 | 2606 | 303 | 18 | 22 | 18 | 22 | 4 | 7 | 0 | 19 | 19.9 | 0.1 | 105.8 | 10.5 | 1.3 | 0.6 | 0.0 | 0.1 | 1.2 | 0.6 | (X) | (X) | (X) | (X) | (X) | (X) | 0.0 | 0.3 | 0.0 | 0.3 | 0.0 | 0.3 | 52.9 | 4.0 | 46.2 | 3.9 | 0.4 | 0.3 | 0.0 | 0.3 | 0.1 | 0.1 | 0.0 | 0.3 | 0.0 | 0.3 | 0.0 | 0.3 | 0.3 | 0.3 | 0.1 | 0.2 | 0.0 | 0.1 | 0.0 | 0.3 | 0.0 | 0.3 | 0.0 | 0.3 | 0.0 | 0.3 | 0.0 | 0.3 | 1.2 | 0.6 | 1.2 | 0.6 | 97.9 | 0.9 | 99.6 | 0.5 | 100.0 | 0.3 | 98.8 | 0.6 | 22.9 | 2.6 | 0.2 | 0.2 | 0.2 | 0.2 | 0.0 | 0.1 | 0.0 | 0.3 | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | 0.0 | (X) | 0.0 | (X) | 5839 | 427 | 0 | 19 | 0 | 19 | 0 | 19 | 3219 | 423 | 2586 | 310 | 27 | 26 | 0 | 19 | 1 | 2 | 0 | 19 | 0 | 19 | 0 | 19 | 6 | 7 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 63 | 42 | 63 | 42 | 5742 | 426 | 5833 | 427 | 5839 | 427 | 5776 | 428 | 1283 | 205 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 19.8 | 0.2 | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | 0.0 | 0.6 | 0.0 | 0.6 | 0.0 | 0.6 | 55.1 | 5.2 | 44.3 | 5.1 | 0.5 | 0.4 | 0.0 | 0.6 | 0.0 | 0.1 | 0.0 | 0.6 | 0.0 | 0.6 | 0.0 | 0.6 | 0.1 | 0.1 | 0.0 | 0.6 | 0.0 | 0.6 | 0.0 | 0.6 | 0.0 | 0.6 | 0.0 | 0.6 | 0.0 | 0.6 | 0.0 | 0.6 | 1.1 | 0.7 | 1.1 | 0.7 | 98.3 | 0.9 | 99.9 | 0.1 | 100.0 | 0.6 | 98.9 | 0.7 | 22.0 | 3.4 | 0.0 | 0.6 | 0.0 | 0.6 | 0.0 | 0.6 | 0.0 | 0.6 | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | 5518 | 306 | 0 | 19 | 0 | 19 | 0 | 19 | 2789 | 283 | 2658 | 275 | 20 | 22 | 0 | 19 | 8 | 15 | 0 | 19 | 0 | 19 | 0 | 19 | 25 | 37 | 14 | 20 | 4 | 7 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 76 | 48 | 76 | 48 | 5371 | 295 | 5475 | 299 | 5518 | 306 | 5442 | 298 | 1323 | 189 | 18 | 22 | 18 | 22 | 4 | 7 | 0 | 19 | 20.0 | 0.2 | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | 0.0 | 0.6 | 0.0 | 0.6 | 0.0 | 0.6 | 50.5 | 4.4 | 48.2 | 4.2 | 0.4 | 0.4 | 0.0 | 0.6 | 0.1 | 0.3 | 0.0 | 0.6 | 0.0 | 0.6 | 0.0 | 0.6 | 0.5 | 0.7 | 0.3 | 0.4 | 0.1 | 0.1 | 0.0 | 0.6 | 0.0 | 0.6 | 0.0 | 0.6 | 0.0 | 0.6 | 0.0 | 0.6 | 1.4 | 0.9 | 1.4 | 0.9 | 97.3 | 1.5 | 99.2 | 1.0 | 100.0 | 0.6 | 98.6 | 0.9 | 24.0 | 3.3 | 0.3 | 0.4 | 0.3 | 0.4 | 0.1 | 0.1 | 0.0 | 0.6 | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) |
| 4 | 8600000US01005 | ZCTA5 01005 | 5128 | 404 | 127 | 72 | 199 | 139 | 408 | 153 | 424 | 152 | 358 | 146 | 219 | 111 | 316 | 151 | 132 | 89 | 143 | 80 | 490 | 194 | 308 | 137 | 711 | 242 | 500 | 158 | 375 | 158 | 167 | 82 | 68 | 48 | 81 | 63 | 102 | 127 | 607 | 231 | 271 | 117 | 1005 | 252 | 511 | 145 | 1592 | 249 | 4333 | 387 | 4123 | 381 | 3933 | 374 | 1293 | 236 | 1078 | 252 | 793 | 196 | 251 | 140 | 48.1 | 2.4 | 87.2 | 16.1 | 54.0 | 11.2 | 23.8 | 6.6 | 30.2 | 8.6 | (X) | (X) | (X) | (X) | (X) | (X) | 2.5 | 1.4 | 3.9 | 2.6 | 8.0 | 2.9 | 8.3 | 2.9 | 7.0 | 2.8 | 4.3 | 2.2 | 6.2 | 2.8 | 2.6 | 1.7 | 2.8 | 1.6 | 9.6 | 3.7 | 6.0 | 2.6 | 13.9 | 4.8 | 9.8 | 3.0 | 7.3 | 3.0 | 3.3 | 1.6 | 1.3 | 0.9 | 1.6 | 1.2 | 2.0 | 2.5 | 11.8 | 4.2 | 5.3 | 2.3 | 19.6 | 4.5 | 10.0 | 2.6 | 31.0 | 4.0 | 84.5 | 4.3 | 80.4 | 4.5 | 76.7 | 4.8 | 25.2 | 4.2 | 21.0 | 4.7 | 15.5 | 3.7 | 4.9 | 2.7 | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | 1.2 | (X) | 4.3 | (X) | 2388 | 258 | 50 | 43 | 25 | 27 | 170 | 90 | 184 | 92 | 102 | 71 | 134 | 87 | 157 | 86 | 117 | 90 | 46 | 40 | 206 | 111 | 184 | 91 | 361 | 159 | 209 | 105 | 237 | 143 | 111 | 58 | 42 | 40 | 53 | 49 | 0 | 17 | 195 | 97 | 132 | 80 | 377 | 144 | 154 | 85 | 740 | 151 | 2099 | 257 | 2011 | 258 | 1959 | 260 | 652 | 176 | 561 | 166 | 443 | 150 | 95 | 63 | 50.1 | 3.1 | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | 2.1 | 1.8 | 1.0 | 1.1 | 7.1 | 3.7 | 7.7 | 3.7 | 4.3 | 3.0 | 5.6 | 3.6 | 6.6 | 3.5 | 4.9 | 3.8 | 1.9 | 1.7 | 8.6 | 4.4 | 7.7 | 3.7 | 15.1 | 6.4 | 8.8 | 4.2 | 9.9 | 6.0 | 4.6 | 2.5 | 1.8 | 1.6 | 2.2 | 2.0 | 0.0 | 1.5 | 8.2 | 4.0 | 5.5 | 3.2 | 15.8 | 5.8 | 6.4 | 3.5 | 31.0 | 5.9 | 87.9 | 4.5 | 84.2 | 5.8 | 82.0 | 6.3 | 27.3 | 6.9 | 23.5 | 6.8 | 18.6 | 6.2 | 4.0 | 2.6 | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | 2740 | 358 | 77 | 65 | 174 | 135 | 238 | 110 | 240 | 121 | 256 | 133 | 85 | 60 | 159 | 96 | 15 | 24 | 97 | 64 | 284 | 124 | 124 | 92 | 350 | 152 | 291 | 116 | 138 | 83 | 56 | 43 | 26 | 35 | 28 | 59 | 102 | 127 | 412 | 202 | 139 | 86 | 628 | 219 | 357 | 138 | 852 | 188 | 2234 | 287 | 2112 | 262 | 1974 | 245 | 641 | 182 | 517 | 170 | 350 | 161 | 156 | 138 | 46.4 | 6.5 | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | 2.8 | 2.4 | 6.4 | 4.6 | 8.7 | 3.7 | 8.8 | 4.1 | 9.3 | 4.6 | 3.1 | 2.2 | 5.8 | 3.2 | 0.5 | 0.9 | 3.5 | 2.3 | 10.4 | 4.7 | 4.5 | 3.3 | 12.8 | 5.6 | 10.6 | 4.4 | 5.0 | 2.9 | 2.0 | 1.6 | 0.9 | 1.3 | 1.0 | 2.2 | 3.7 | 4.5 | 15.0 | 6.5 | 5.1 | 3.0 | 22.9 | 6.4 | 13.0 | 4.6 | 31.1 | 4.8 | 81.5 | 6.4 | 77.1 | 6.4 | 72.0 | 6.6 | 23.4 | 6.2 | 18.9 | 5.7 | 12.8 | 5.5 | 5.7 | 4.9 | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) | (X) |
#select relevant columns and drop first row - only interested in population counts for under 5 and over 65
age_subset = age[['GEO_ID', 'NAME','S0101_C01_001E', 'S0101_C01_002E', 'S0101_C01_015E', 'S0101_C01_016E','S0101_C01_017E', 'S0101_C01_018E', 'S0101_C01_019E']].drop(age.index[0])
#rename columns for better understanding
age_subset = age_subset.rename(columns={'S0101_C01_001E': 'total_pop', 'S0101_C01_002E': 'pop_under_5', 'S0101_C01_015E': 'pop_65-69', 'S0101_C01_016E': 'pop_70-74', 'S0101_C01_017E': 'pop_75-79', 'S0101_C01_018E': 'pop_80-84', 'S0101_C01_019E': 'pop_85_greater'})
age_subset.head()
| GEO_ID | NAME | total_pop | pop_under_5 | pop_65-69 | pop_70-74 | pop_75-79 | pop_80-84 | pop_85_greater | |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 8600000US01001 | ZCTA5 01001 | 17312 | 956 | 1016 | 1057 | 786 | 435 | 768 |
| 2 | 8600000US01002 | ZCTA5 01002 | 30014 | 872 | 1172 | 1219 | 599 | 441 | 580 |
| 3 | 8600000US01003 | ZCTA5 01003 | 11357 | 0 | 4 | 0 | 0 | 0 | 0 |
| 4 | 8600000US01005 | ZCTA5 01005 | 5128 | 127 | 375 | 167 | 68 | 81 | 102 |
| 5 | 8600000US01007 | ZCTA5 01007 | 15005 | 879 | 880 | 489 | 423 | 310 | 119 |
#convert to numeric
age_subset['total_pop'] = pd.to_numeric(age_subset['total_pop'])
age_subset['pop_under_5'] = pd.to_numeric(age_subset['pop_under_5'])
age_subset['pop_65-69'] = pd.to_numeric(age_subset['pop_65-69'])
age_subset['pop_70-74'] = pd.to_numeric(age_subset['pop_70-74'])
age_subset['pop_75-79'] = pd.to_numeric(age_subset['pop_75-79'])
age_subset['pop_80-84'] = pd.to_numeric(age_subset['pop_80-84'])
age_subset['pop_85_greater'] = pd.to_numeric(age_subset['pop_85_greater'])
age_subset.dtypes
GEO_ID object NAME object total_pop int64 pop_under_5 int64 pop_65-69 int64 pop_70-74 int64 pop_75-79 int64 pop_80-84 int64 pop_85_greater int64 dtype: object
#add over 65 columns together
age_subset['pop_over_65'] = age_subset['pop_65-69'] + age_subset['pop_70-74'] + age_subset['pop_75-79'] + age_subset['pop_80-84'] + age_subset['pop_85_greater']
#drop irrelevant columns
age_vulnerable = age_subset[['GEO_ID', 'NAME', 'total_pop', 'pop_under_5', 'pop_over_65']].copy()
#calculate proportions of over 65 and under 5
age_vulnerable['pct_under_5'] = age_vulnerable['pop_under_5'] / age_vulnerable['total_pop']
age_vulnerable['pct_over_65'] = age_vulnerable['pop_over_65'] / age_vulnerable['total_pop']
age_vulnerable.head()
#drop 'ZCTA5' from NAME column and rename to ZCTA5CE10
age_vulnerable['NAME'] = age_vulnerable['NAME'].str.replace('ZCTA5', '')
age_vulnerable = age_vulnerable.rename(columns={'NAME':'ZCTA5CE10'})
#for joining with other tables, convert ZCTA id to numeric
age_vulnerable['ZCTA5CE10'] = pd.to_numeric(age_vulnerable['ZCTA5CE10'])
age_vulnerable.head()
| GEO_ID | ZCTA5CE10 | total_pop | pop_under_5 | pop_over_65 | pct_under_5 | pct_over_65 | |
|---|---|---|---|---|---|---|---|
| 1 | 8600000US01001 | 1001 | 17312 | 956 | 4062 | 0.055222 | 0.234635 |
| 2 | 8600000US01002 | 1002 | 30014 | 872 | 4011 | 0.029053 | 0.133638 |
| 3 | 8600000US01003 | 1003 | 11357 | 0 | 4 | 0.000000 | 0.000352 |
| 4 | 8600000US01005 | 1005 | 5128 | 127 | 793 | 0.024766 | 0.154641 |
| 5 | 8600000US01007 | 1007 | 15005 | 879 | 2221 | 0.058580 | 0.148017 |
Join age dataframe to ZCTA geodataframe
#convert ZCTA id to numeric for merging with age dataset
zcta_boston['ZCTA5CE10'] = pd.to_numeric(zcta_boston['ZCTA5CE10'])
#merge ZCTA geodataframe with age dataframe
zcta_boston = zcta_boston.merge(age_vulnerable, on='ZCTA5CE10')
zcta_boston.head()
| STATEFP10 | ZCTA5CE10 | GEOID10 | CLASSFP10 | MTFCC10 | FUNCSTAT10 | ALAND10 | AWATER10 | INTPTLAT10 | INTPTLON10 | PARTFLG10 | geometry | zip_code | PC_NAME | PC_TYPE | PA_NAME | PA_FIPS | CITY_TOWN | COUNTY | AREA_SQMI | SHAPE_AREA | SHAPE_LEN | GEO_ID | total_pop | pop_under_5 | pop_over_65 | pct_under_5 | pct_over_65 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 25 | 1905 | 2501905 | B5 | G6350 | S | 9219345 | 1195154 | +42.4659985 | -070.9757922 | N | MULTIPOLYGON (((243877.753 913824.638, 243872.... | 01905 | Lynn | NON UNIQUE | LYNN | 37490 | LYNN | Essex | 4.865583 | 1.260180e+07 | 23492.880715 | 8600000US01905 | 24580 | 1808 | 2418 | 0.073556 | 0.098373 |
| 1 | 25 | 1904 | 2501904 | B5 | G6350 | S | 11708211 | 1303900 | +42.4924563 | -070.9739297 | N | POLYGON ((245700.484 914778.700, 245667.412 91... | 01904 | Lynn | NON UNIQUE | LYNN | 37490 | LYNN | Essex | 4.228883 | 1.095276e+07 | 22465.853752 | 8600000US01904 | 17294 | 1117 | 2405 | 0.064589 | 0.139066 |
| 2 | 25 | 1915 | 2501915 | B5 | G6350 | S | 39091336 | 3958118 | +42.5702688 | -070.8669962 | N | MULTIPOLYGON (((250787.714 926889.372, 251155.... | 01915 | Beverly | NON UNIQUE | BEVERLY | 05595 | BEVERLY | Essex | 14.765718 | 3.824303e+07 | 50712.083048 | 8600000US01915 | 41885 | 2154 | 7023 | 0.051427 | 0.167673 |
| 3 | 25 | 2462 | 2502462 | B5 | G6350 | S | 1369318 | 69749 | +42.3287076 | -071.2559002 | N | MULTIPOLYGON (((222058.060 897313.471, 222020.... | 02462 | Newton Lower Falls | NON UNIQUE | NEWTON LOWER FALLS | 45665 | NEWTON | Middlesex | 0.586958 | 1.520215e+06 | 9916.529321 | 8600000US02462 | 1389 | 61 | 233 | 0.043916 | 0.167747 |
| 4 | 25 | 1760 | 2501760 | B5 | G6350 | S | 38359306 | 2599042 | +42.2848223 | -071.3488109 | N | POLYGON ((208131.535 893134.452, 208128.879 89... | 01760 | Natick | NON UNIQUE | NATICK | 43930 | NATICK, TOWN OF | Middlesex | 15.776077 | 4.085985e+07 | 40212.997681 | 8600000US01760 | 35761 | 2089 | 5550 | 0.058416 | 0.155197 |
#look at descriptive statistics for vulnerable age categories
zcta_boston[['pct_under_5', 'pct_over_65']].describe()
| pct_under_5 | pct_over_65 | |
|---|---|---|
| count | 170.000000 | 170.000000 |
| mean | 0.050815 | 0.160522 |
| std | 0.021885 | 0.084787 |
| min | 0.000000 | 0.000000 |
| 25% | 0.040941 | 0.128391 |
| 50% | 0.051894 | 0.158112 |
| 75% | 0.060727 | 0.184037 |
| max | 0.191597 | 1.000000 |
#plot by age - under 5
under_5_plot = zcta_boston.plot(column='pct_under_5',
figsize=(11,9),
cmap='PuBuGn',
edgecolor='grey',
linewidth=0.5,
scheme='quantiles',
legend=True)
#use contextily to add a basemap
cx.add_basemap(under_5_plot,
crs=zcta_boston.crs,
source=cx.providers.CartoDB.Voyager)
#add a title
plt.title('Percent of Population under 5, Mapped by Quantile')
Text(0.5, 1.0, 'Percent of Population under 5, Mapped by Quantile')
Age Under 5: Most vulnerable ZCTAs
zcta_boston[['zip_code','pct_under_5','PC_NAME']].sort_values(by=['pct_under_5'], ascending=False).head(10)
| zip_code | pct_under_5 | PC_NAME | |
|---|---|---|---|
| 35 | 01745 | 0.191597 | Fayville |
| 66 | 01731 | 0.144730 | Hanscom Afb |
| 165 | 02129 | 0.094520 | Charlestown |
| 98 | 02150 | 0.086862 | Chelsea |
| 159 | 02464 | 0.079976 | Newton Upper Falls |
| 144 | 02025 | 0.077676 | Cohasset |
| 127 | 01902 | 0.077557 | Lynn |
| 48 | 02052 | 0.076707 | Medfield |
| 116 | 01754 | 0.075972 | Maynard |
| 0 | 01905 | 0.073556 | Lynn |
ZCTAs with higher populations under 5 appear to be randomly dispersed throughout the Boston MPO. ZCTAs in Fayville, Hanscom, Charlestown, and Chelsea score highest for this indicator.
#plot by age - over 65
over_65_plot = zcta_boston.plot(column='pct_over_65',
figsize=(11,9),
scheme='quantiles',
cmap='PuBuGn',
edgecolor='grey',
linewidth=0.5,
legend=True)
cx.add_basemap(over_65_plot,
crs=zcta_boston.crs,
source=cx.providers.CartoDB.Voyager)
plt.title('Percent of Population over 65, Mapped by Quantile')
Text(0.5, 1.0, 'Percent of Population over 65, Mapped by Quantile')
Age Over 65: Most vulnerable ZCTAs
zcta_boston[['zip_code','pct_over_65','PC_NAME']].sort_values(by=['pct_over_65'], ascending=False).head(10)
| zip_code | pct_over_65 | PC_NAME | |
|---|---|---|---|
| 150 | 02203 | 1.000000 | NaN |
| 74 | 02047 | 0.422680 | Humarock |
| 18 | 01966 | 0.337021 | Rockport |
| 14 | 02110 | 0.291703 | Boston |
| 115 | 01773 | 0.283579 | Lincoln |
| 17 | 01908 | 0.243861 | Nahant |
| 123 | 02045 | 0.239885 | Hull |
| 128 | 01944 | 0.236485 | Manchester |
| 62 | 01983 | 0.229903 | Topsfield |
| 50 | 02191 | 0.226196 | North Weymouth |
ZCTAs with higher populations over the age of 65 are concentrated in the inner ring suburbs and North Shore areas, like Humarock, Rockport, Boston, Lincoln, and Nahant.
Low-income populations tend to have less resources for keeping their homes cool in warm months, making them more vulnerable to extreme heat (Reid Colleen E. et al. 2009). To capture this, I used median household income estimates from the American Community Survey. ZCTAs with lower median household incomes will be considered more vulnerable in this analysis.
#read in income CSV
income = pd.read_csv("data/ACSST5Y2019.S2503/ACSST5Y2019.S2503_data_with_overlays.csv")
income.head()
| GEO_ID | NAME | S2503_C01_001E | S2503_C01_001M | S2503_C01_002E | S2503_C01_002M | S2503_C01_003E | S2503_C01_003M | S2503_C01_004E | S2503_C01_004M | S2503_C01_005E | S2503_C01_005M | S2503_C01_006E | S2503_C01_006M | S2503_C01_007E | S2503_C01_007M | S2503_C01_008E | S2503_C01_008M | S2503_C01_009E | S2503_C01_009M | S2503_C01_010E | S2503_C01_010M | S2503_C01_011E | S2503_C01_011M | S2503_C01_012E | S2503_C01_012M | S2503_C01_013E | S2503_C01_013M | S2503_C01_014E | S2503_C01_014M | S2503_C01_015E | S2503_C01_015M | S2503_C01_016E | S2503_C01_016M | S2503_C01_017E | S2503_C01_017M | S2503_C01_018E | S2503_C01_018M | S2503_C01_019E | S2503_C01_019M | S2503_C01_020E | S2503_C01_020M | S2503_C01_021E | S2503_C01_021M | S2503_C01_022E | S2503_C01_022M | S2503_C01_023E | S2503_C01_023M | S2503_C01_024E | S2503_C01_024M | S2503_C01_025E | S2503_C01_025M | S2503_C01_026E | S2503_C01_026M | S2503_C01_027E | S2503_C01_027M | S2503_C01_028E | S2503_C01_028M | S2503_C01_029E | S2503_C01_029M | S2503_C01_030E | S2503_C01_030M | S2503_C01_031E | S2503_C01_031M | S2503_C01_032E | S2503_C01_032M | S2503_C01_033E | S2503_C01_033M | S2503_C01_034E | S2503_C01_034M | S2503_C01_035E | S2503_C01_035M | S2503_C01_036E | S2503_C01_036M | S2503_C01_037E | S2503_C01_037M | S2503_C01_038E | S2503_C01_038M | S2503_C01_039E | S2503_C01_039M | S2503_C01_040E | S2503_C01_040M | S2503_C01_041E | S2503_C01_041M | S2503_C01_042E | S2503_C01_042M | S2503_C01_043E | S2503_C01_043M | S2503_C01_044E | S2503_C01_044M | S2503_C01_045E | S2503_C01_045M | S2503_C01_046E | S2503_C01_046M | S2503_C02_001E | S2503_C02_001M | S2503_C02_002E | S2503_C02_002M | S2503_C02_003E | S2503_C02_003M | S2503_C02_004E | S2503_C02_004M | S2503_C02_005E | S2503_C02_005M | S2503_C02_006E | S2503_C02_006M | S2503_C02_007E | S2503_C02_007M | S2503_C02_008E | S2503_C02_008M | S2503_C02_009E | S2503_C02_009M | S2503_C02_010E | S2503_C02_010M | S2503_C02_011E | S2503_C02_011M | S2503_C02_012E | S2503_C02_012M | S2503_C02_013E | S2503_C02_013M | S2503_C02_014E | S2503_C02_014M | S2503_C02_015E | S2503_C02_015M | S2503_C02_016E | S2503_C02_016M | S2503_C02_017E | S2503_C02_017M | S2503_C02_018E | S2503_C02_018M | S2503_C02_019E | S2503_C02_019M | S2503_C02_020E | S2503_C02_020M | S2503_C02_021E | S2503_C02_021M | S2503_C02_022E | S2503_C02_022M | S2503_C02_023E | S2503_C02_023M | S2503_C02_024E | S2503_C02_024M | S2503_C02_025E | S2503_C02_025M | S2503_C02_026E | S2503_C02_026M | S2503_C02_027E | S2503_C02_027M | S2503_C02_028E | S2503_C02_028M | S2503_C02_029E | S2503_C02_029M | S2503_C02_030E | S2503_C02_030M | S2503_C02_031E | S2503_C02_031M | S2503_C02_032E | S2503_C02_032M | S2503_C02_033E | S2503_C02_033M | S2503_C02_034E | S2503_C02_034M | S2503_C02_035E | S2503_C02_035M | S2503_C02_036E | S2503_C02_036M | S2503_C02_037E | S2503_C02_037M | S2503_C02_038E | S2503_C02_038M | S2503_C02_039E | S2503_C02_039M | S2503_C02_040E | S2503_C02_040M | S2503_C02_041E | S2503_C02_041M | S2503_C02_042E | S2503_C02_042M | S2503_C02_043E | S2503_C02_043M | S2503_C02_044E | S2503_C02_044M | S2503_C02_045E | S2503_C02_045M | S2503_C02_046E | S2503_C02_046M | S2503_C03_001E | S2503_C03_001M | S2503_C03_002E | S2503_C03_002M | S2503_C03_003E | S2503_C03_003M | S2503_C03_004E | S2503_C03_004M | S2503_C03_005E | S2503_C03_005M | S2503_C03_006E | S2503_C03_006M | S2503_C03_007E | S2503_C03_007M | S2503_C03_008E | S2503_C03_008M | S2503_C03_009E | S2503_C03_009M | S2503_C03_010E | S2503_C03_010M | S2503_C03_011E | S2503_C03_011M | S2503_C03_012E | S2503_C03_012M | S2503_C03_013E | S2503_C03_013M | S2503_C03_014E | S2503_C03_014M | S2503_C03_015E | S2503_C03_015M | S2503_C03_016E | S2503_C03_016M | S2503_C03_017E | S2503_C03_017M | S2503_C03_018E | S2503_C03_018M | S2503_C03_019E | S2503_C03_019M | S2503_C03_020E | S2503_C03_020M | S2503_C03_021E | S2503_C03_021M | S2503_C03_022E | S2503_C03_022M | S2503_C03_023E | S2503_C03_023M | S2503_C03_024E | S2503_C03_024M | S2503_C03_025E | S2503_C03_025M | S2503_C03_026E | S2503_C03_026M | S2503_C03_027E | S2503_C03_027M | S2503_C03_028E | S2503_C03_028M | S2503_C03_029E | S2503_C03_029M | S2503_C03_030E | S2503_C03_030M | S2503_C03_031E | S2503_C03_031M | S2503_C03_032E | S2503_C03_032M | S2503_C03_033E | S2503_C03_033M | S2503_C03_034E | S2503_C03_034M | S2503_C03_035E | S2503_C03_035M | S2503_C03_036E | S2503_C03_036M | S2503_C03_037E | S2503_C03_037M | S2503_C03_038E | S2503_C03_038M | S2503_C03_039E | S2503_C03_039M | S2503_C03_040E | S2503_C03_040M | S2503_C03_041E | S2503_C03_041M | S2503_C03_042E | S2503_C03_042M | S2503_C03_043E | S2503_C03_043M | S2503_C03_044E | S2503_C03_044M | S2503_C03_045E | S2503_C03_045M | S2503_C03_046E | S2503_C03_046M | S2503_C04_001E | S2503_C04_001M | S2503_C04_002E | S2503_C04_002M | S2503_C04_003E | S2503_C04_003M | S2503_C04_004E | S2503_C04_004M | S2503_C04_005E | S2503_C04_005M | S2503_C04_006E | S2503_C04_006M | S2503_C04_007E | S2503_C04_007M | S2503_C04_008E | S2503_C04_008M | S2503_C04_009E | S2503_C04_009M | S2503_C04_010E | S2503_C04_010M | S2503_C04_011E | S2503_C04_011M | S2503_C04_012E | S2503_C04_012M | S2503_C04_013E | S2503_C04_013M | S2503_C04_014E | S2503_C04_014M | S2503_C04_015E | S2503_C04_015M | S2503_C04_016E | S2503_C04_016M | S2503_C04_017E | S2503_C04_017M | S2503_C04_018E | S2503_C04_018M | S2503_C04_019E | S2503_C04_019M | S2503_C04_020E | S2503_C04_020M | S2503_C04_021E | S2503_C04_021M | S2503_C04_022E | S2503_C04_022M | S2503_C04_023E | S2503_C04_023M | S2503_C04_024E | S2503_C04_024M | S2503_C04_025E | S2503_C04_025M | S2503_C04_026E | S2503_C04_026M | S2503_C04_027E | S2503_C04_027M | S2503_C04_028E | S2503_C04_028M | S2503_C04_029E | S2503_C04_029M | S2503_C04_030E | S2503_C04_030M | S2503_C04_031E | S2503_C04_031M | S2503_C04_032E | S2503_C04_032M | S2503_C04_033E | S2503_C04_033M | S2503_C04_034E | S2503_C04_034M | S2503_C04_035E | S2503_C04_035M | S2503_C04_036E | S2503_C04_036M | S2503_C04_037E | S2503_C04_037M | S2503_C04_038E | S2503_C04_038M | S2503_C04_039E | S2503_C04_039M | S2503_C04_040E | S2503_C04_040M | S2503_C04_041E | S2503_C04_041M | S2503_C04_042E | S2503_C04_042M | S2503_C04_043E | S2503_C04_043M | S2503_C04_044E | S2503_C04_044M | S2503_C04_045E | S2503_C04_045M | S2503_C04_046E | S2503_C04_046M | S2503_C05_001E | S2503_C05_001M | S2503_C05_002E | S2503_C05_002M | S2503_C05_003E | S2503_C05_003M | S2503_C05_004E | S2503_C05_004M | S2503_C05_005E | S2503_C05_005M | S2503_C05_006E | S2503_C05_006M | S2503_C05_007E | S2503_C05_007M | S2503_C05_008E | S2503_C05_008M | S2503_C05_009E | S2503_C05_009M | S2503_C05_010E | S2503_C05_010M | S2503_C05_011E | S2503_C05_011M | S2503_C05_012E | S2503_C05_012M | S2503_C05_013E | S2503_C05_013M | S2503_C05_014E | S2503_C05_014M | S2503_C05_015E | S2503_C05_015M | S2503_C05_016E | S2503_C05_016M | S2503_C05_017E | S2503_C05_017M | S2503_C05_018E | S2503_C05_018M | S2503_C05_019E | S2503_C05_019M | S2503_C05_020E | S2503_C05_020M | S2503_C05_021E | S2503_C05_021M | S2503_C05_022E | S2503_C05_022M | S2503_C05_023E | S2503_C05_023M | S2503_C05_024E | S2503_C05_024M | S2503_C05_025E | S2503_C05_025M | S2503_C05_026E | S2503_C05_026M | S2503_C05_027E | S2503_C05_027M | S2503_C05_028E | S2503_C05_028M | S2503_C05_029E | S2503_C05_029M | S2503_C05_030E | S2503_C05_030M | S2503_C05_031E | S2503_C05_031M | S2503_C05_032E | S2503_C05_032M | S2503_C05_033E | S2503_C05_033M | S2503_C05_034E | S2503_C05_034M | S2503_C05_035E | S2503_C05_035M | S2503_C05_036E | S2503_C05_036M | S2503_C05_037E | S2503_C05_037M | S2503_C05_038E | S2503_C05_038M | S2503_C05_039E | S2503_C05_039M | S2503_C05_040E | S2503_C05_040M | S2503_C05_041E | S2503_C05_041M | S2503_C05_042E | S2503_C05_042M | S2503_C05_043E | S2503_C05_043M | S2503_C05_044E | S2503_C05_044M | S2503_C05_045E | S2503_C05_045M | S2503_C05_046E | S2503_C05_046M | S2503_C06_001E | S2503_C06_001M | S2503_C06_002E | S2503_C06_002M | S2503_C06_003E | S2503_C06_003M | S2503_C06_004E | S2503_C06_004M | S2503_C06_005E | S2503_C06_005M | S2503_C06_006E | S2503_C06_006M | S2503_C06_007E | S2503_C06_007M | S2503_C06_008E | S2503_C06_008M | S2503_C06_009E | S2503_C06_009M | S2503_C06_010E | S2503_C06_010M | S2503_C06_011E | S2503_C06_011M | S2503_C06_012E | S2503_C06_012M | S2503_C06_013E | S2503_C06_013M | S2503_C06_014E | S2503_C06_014M | S2503_C06_015E | S2503_C06_015M | S2503_C06_016E | S2503_C06_016M | S2503_C06_017E | S2503_C06_017M | S2503_C06_018E | S2503_C06_018M | S2503_C06_019E | S2503_C06_019M | S2503_C06_020E | S2503_C06_020M | S2503_C06_021E | S2503_C06_021M | S2503_C06_022E | S2503_C06_022M | S2503_C06_023E | S2503_C06_023M | S2503_C06_024E | S2503_C06_024M | S2503_C06_025E | S2503_C06_025M | S2503_C06_026E | S2503_C06_026M | S2503_C06_027E | S2503_C06_027M | S2503_C06_028E | S2503_C06_028M | S2503_C06_029E | S2503_C06_029M | S2503_C06_030E | S2503_C06_030M | S2503_C06_031E | S2503_C06_031M | S2503_C06_032E | S2503_C06_032M | S2503_C06_033E | S2503_C06_033M | S2503_C06_034E | S2503_C06_034M | S2503_C06_035E | S2503_C06_035M | S2503_C06_036E | S2503_C06_036M | S2503_C06_037E | S2503_C06_037M | S2503_C06_038E | S2503_C06_038M | S2503_C06_039E | S2503_C06_039M | S2503_C06_040E | S2503_C06_040M | S2503_C06_041E | S2503_C06_041M | S2503_C06_042E | S2503_C06_042M | S2503_C06_043E | S2503_C06_043M | S2503_C06_044E | S2503_C06_044M | S2503_C06_045E | S2503_C06_045M | S2503_C06_046E | S2503_C06_046M | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | id | Geographic Area Name | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Occupied housing units!!Occupied hou... | Margin of Error!!Occupied housing units!!Occup... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Percent occupied housing units!!Occu... | Margin of Error!!Percent occupied housing unit... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Owner-occupied housing units!!Occupi... | Margin of Error!!Owner-occupied housing units!... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Percent owner-occupied housing units... | Margin of Error!!Percent owner-occupied housin... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Renter-occupied housing units!!Occup... | Margin of Error!!Renter-occupied housing units... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... | Estimate!!Percent renter-occupied housing unit... | Margin of Error!!Percent renter-occupied housi... |
| 1 | 8600000US01001 | ZCTA5 01001 | 7413 | 322 | 230 | 138 | 163 | 105 | 320 | 113 | 238 | 103 | 342 | 146 | 503 | 168 | 847 | 204 | 1617 | 287 | 732 | 181 | 1432 | 210 | 989 | 245 | 63949 | 3784 | 48 | 46 | 472 | 156 | 1559 | 304 | 802 | 202 | 2246 | 325 | 1186 | 222 | 612 | 161 | 182 | 109 | 148 | 103 | 158 | 72 | 1141 | 49 | 818 | 198 | 0 | 19 | 32 | 36 | 786 | 193 | 818 | 215 | 51 | 43 | 253 | 132 | 514 | 175 | 847 | 204 | 254 | 124 | 252 | 116 | 341 | 137 | 1575 | 292 | 585 | 168 | 614 | 209 | 376 | 163 | 3109 | 297 | 2418 | 291 | 654 | 156 | 37 | 37 | 88 | 78 | 158 | 72 | 7413 | 322 | 3.1 | 1.8 | 2.2 | 1.4 | 4.3 | 1.5 | 3.2 | 1.4 | 4.6 | 2.0 | 6.8 | 2.2 | 11.4 | 2.7 | 21.8 | 3.6 | 9.9 | 2.3 | 19.3 | 2.9 | 13.3 | 3.3 | 63949 | 3784 | 0.6 | 0.6 | 6.4 | 2.1 | 21.0 | 4.0 | 10.8 | 2.7 | 30.3 | 3.9 | 16.0 | 3.0 | 8.3 | 2.2 | 2.5 | 1.5 | 2.0 | 1.4 | 2.1 | 1.0 | 1141 | 49 | 11.0 | 2.7 | 0.0 | 0.5 | 0.4 | 0.5 | 10.6 | 2.6 | 11.0 | 2.9 | 0.7 | 0.6 | 3.4 | 1.8 | 6.9 | 2.3 | 11.4 | 2.7 | 3.4 | 1.7 | 3.4 | 1.6 | 4.6 | 1.8 | 21.2 | 3.6 | 7.9 | 2.2 | 8.3 | 2.7 | 5.1 | 2.2 | 41.9 | 3.9 | 32.6 | 3.8 | 8.8 | 2.1 | 0.5 | 0.5 | 1.2 | 1.0 | 2.1 | 1.0 | 5408 | 334 | 79 | 81 | 92 | 89 | 99 | 62 | 145 | 97 | 206 | 113 | 313 | 135 | 525 | 167 | 1186 | 235 | 660 | 179 | 1241 | 187 | 862 | 218 | 76329 | 8067 | 16 | 26 | 362 | 139 | 1324 | 282 | 564 | 173 | 1455 | 269 | 919 | 196 | 506 | 143 | 182 | 109 | 80 | 52 | (X) | (X) | 1137 | 69 | 369 | 132 | 0 | 19 | 15 | 24 | 354 | 130 | 519 | 168 | 36 | 35 | 229 | 127 | 254 | 125 | 525 | 167 | 191 | 94 | 145 | 93 | 189 | 125 | 1186 | 235 | 497 | 146 | 424 | 154 | 265 | 143 | 2763 | 264 | 2105 | 270 | 621 | 152 | 37 | 37 | 46 | 71 | (X) | (X) | 5408 | 334 | 1.5 | 1.5 | 1.7 | 1.6 | 1.8 | 1.1 | 2.7 | 1.8 | 3.8 | 2.1 | 5.8 | 2.5 | 9.7 | 3.0 | 21.9 | 4.0 | 12.2 | 3.0 | 22.9 | 3.6 | 15.9 | 4.0 | 76329 | 8067 | 0.3 | 0.5 | 6.7 | 2.5 | 24.5 | 4.9 | 10.4 | 3.1 | 26.9 | 4.5 | 17.0 | 3.6 | 9.4 | 2.7 | 3.4 | 2.0 | 1.5 | 1.0 | (X) | (X) | 1137 | 69 | 6.8 | 2.4 | 0.0 | 0.6 | 0.3 | 0.5 | 6.5 | 2.4 | 9.6 | 3.0 | 0.7 | 0.6 | 4.2 | 2.4 | 4.7 | 2.3 | 9.7 | 3.0 | 3.5 | 1.7 | 2.7 | 1.7 | 3.5 | 2.3 | 21.9 | 4.0 | 9.2 | 2.6 | 7.8 | 2.8 | 4.9 | 2.6 | 51.1 | 4.3 | 38.9 | 4.6 | 11.5 | 2.8 | 0.7 | 0.7 | 0.9 | 1.3 | (X) | (X) | 2005 | 275 | 151 | 118 | 71 | 55 | 221 | 94 | 93 | 62 | 136 | 92 | 190 | 90 | 322 | 142 | 431 | 148 | 72 | 55 | 191 | 116 | 127 | 79 | 38902 | 7728 | 32 | 38 | 110 | 58 | 235 | 122 | 238 | 94 | 791 | 192 | 267 | 141 | 106 | 79 | 0 | 19 | 68 | 82 | 158 | 72 | 1148 | 59 | 449 | 142 | 0 | 19 | 17 | 28 | 432 | 138 | 299 | 122 | 15 | 25 | 24 | 30 | 260 | 117 | 322 | 142 | 63 | 80 | 107 | 69 | 152 | 81 | 389 | 146 | 88 | 69 | 190 | 119 | 111 | 79 | 346 | 156 | 313 | 148 | 33 | 38 | 0 | 19 | 42 | 35 | 158 | 72 | 2005 | 275 | 7.5 | 5.6 | 3.5 | 2.8 | 11.0 | 4.6 | 4.6 | 3.1 | 6.8 | 4.7 | 9.5 | 4.3 | 16.1 | 6.8 | 21.5 | 6.7 | 3.6 | 2.7 | 9.5 | 5.5 | 6.3 | 3.9 | 38902 | 7728 | 1.6 | 1.9 | 5.5 | 2.8 | 11.7 | 5.8 | 11.9 | 4.7 | 39.5 | 7.8 | 13.3 | 6.6 | 5.3 | 3.9 | 0.0 | 1.7 | 3.4 | 4.1 | 7.9 | 3.5 | 1148 | 59 | 22.4 | 6.5 | 0.0 | 1.7 | 0.8 | 1.4 | 21.5 | 6.4 | 14.9 | 6.2 | 0.7 | 1.2 | 1.2 | 1.5 | 13.0 | 5.9 | 16.1 | 6.8 | 3.1 | 3.9 | 5.3 | 3.3 | 7.6 | 4.1 | 19.4 | 6.6 | 4.4 | 3.4 | 9.5 | 5.6 | 5.5 | 4.0 | 17.3 | 7.2 | 15.6 | 6.9 | 1.6 | 1.8 | 0.0 | 1.7 | 2.1 | 1.7 | 7.9 | 3.5 |
| 2 | 8600000US01002 | ZCTA5 01002 | 9798 | 451 | 562 | 198 | 376 | 130 | 465 | 212 | 423 | 179 | 322 | 122 | 905 | 223 | 1258 | 287 | 1118 | 230 | 1228 | 244 | 1289 | 204 | 1852 | 229 | 61159 | 8382 | 245 | 98 | 223 | 98 | 966 | 229 | 1190 | 243 | 2795 | 356 | 1762 | 278 | 1197 | 255 | 705 | 188 | 658 | 129 | 57 | 47 | 1405 | 61 | 1485 | 352 | 40 | 41 | 79 | 57 | 1366 | 343 | 1211 | 249 | 87 | 78 | 178 | 112 | 946 | 194 | 1241 | 287 | 93 | 67 | 280 | 156 | 868 | 277 | 1110 | 229 | 311 | 122 | 336 | 127 | 463 | 132 | 4369 | 302 | 2973 | 265 | 1001 | 199 | 395 | 132 | 325 | 158 | 57 | 47 | 9798 | 451 | 5.7 | 2.0 | 3.8 | 1.3 | 4.7 | 2.1 | 4.3 | 1.8 | 3.3 | 1.2 | 9.2 | 2.2 | 12.8 | 2.9 | 11.4 | 2.3 | 12.5 | 2.6 | 13.2 | 2.1 | 18.9 | 2.4 | 61159 | 8382 | 2.5 | 1.0 | 2.3 | 1.0 | 9.9 | 2.2 | 12.1 | 2.4 | 28.5 | 3.0 | 18.0 | 2.8 | 12.2 | 2.7 | 7.2 | 2.0 | 6.7 | 1.3 | 0.6 | 0.5 | 1405 | 61 | 15.2 | 3.3 | 0.4 | 0.4 | 0.8 | 0.6 | 13.9 | 3.3 | 12.4 | 2.4 | 0.9 | 0.8 | 1.8 | 1.1 | 9.7 | 1.9 | 12.7 | 2.9 | 0.9 | 0.7 | 2.9 | 1.6 | 8.9 | 2.8 | 11.3 | 2.3 | 3.2 | 1.2 | 3.4 | 1.3 | 4.7 | 1.4 | 44.6 | 3.4 | 30.3 | 2.7 | 10.2 | 2.1 | 4.0 | 1.4 | 3.3 | 1.6 | 0.6 | 0.5 | 4802 | 342 | 67 | 67 | 67 | 54 | 69 | 42 | 74 | 56 | 97 | 63 | 345 | 122 | 322 | 103 | 520 | 152 | 544 | 112 | 971 | 173 | 1726 | 219 | 108962 | 8858 | 58 | 56 | 72 | 50 | 564 | 152 | 731 | 144 | 1056 | 180 | 631 | 139 | 576 | 145 | 482 | 133 | 632 | 127 | (X) | (X) | 1461 | 99 | 269 | 105 | 3 | 4 | 0 | 26 | 266 | 105 | 442 | 129 | 57 | 53 | 57 | 50 | 328 | 116 | 322 | 103 | 32 | 36 | 108 | 58 | 182 | 84 | 520 | 152 | 253 | 117 | 110 | 62 | 157 | 63 | 3241 | 274 | 2506 | 242 | 468 | 130 | 267 | 91 | 8 | 12 | (X) | (X) | 4802 | 342 | 1.4 | 1.4 | 1.4 | 1.1 | 1.4 | 0.9 | 1.5 | 1.1 | 2.0 | 1.3 | 7.2 | 2.4 | 6.7 | 2.2 | 10.8 | 2.9 | 11.3 | 2.2 | 20.2 | 3.4 | 35.9 | 4.3 | 108962 | 8858 | 1.2 | 1.1 | 1.5 | 1.0 | 11.7 | 3.0 | 15.2 | 2.7 | 22.0 | 3.4 | 13.1 | 2.8 | 12.0 | 2.9 | 10.0 | 2.8 | 13.2 | 2.6 | (X) | (X) | 1461 | 99 | 5.6 | 2.1 | 0.1 | 0.1 | 0.0 | 0.7 | 5.5 | 2.1 | 9.2 | 2.4 | 1.2 | 1.1 | 1.2 | 1.0 | 6.8 | 2.3 | 6.7 | 2.2 | 0.7 | 0.8 | 2.2 | 1.2 | 3.8 | 1.8 | 10.8 | 2.9 | 5.3 | 2.3 | 2.3 | 1.3 | 3.3 | 1.3 | 67.5 | 4.5 | 52.2 | 4.5 | 9.7 | 2.6 | 5.6 | 1.9 | 0.2 | 0.2 | (X) | (X) | 4996 | 387 | 495 | 193 | 309 | 122 | 396 | 205 | 349 | 167 | 225 | 97 | 560 | 205 | 936 | 272 | 598 | 164 | 684 | 212 | 318 | 127 | 126 | 70 | 36120 | 3165 | 187 | 86 | 151 | 83 | 402 | 171 | 459 | 192 | 1739 | 346 | 1131 | 259 | 621 | 207 | 223 | 145 | 26 | 29 | 57 | 47 | 1380 | 72 | 1216 | 326 | 37 | 40 | 79 | 57 | 1100 | 315 | 769 | 231 | 30 | 41 | 121 | 93 | 618 | 183 | 919 | 272 | 61 | 60 | 172 | 144 | 686 | 266 | 590 | 163 | 58 | 50 | 226 | 106 | 306 | 117 | 1128 | 224 | 467 | 157 | 533 | 176 | 128 | 109 | 317 | 160 | 57 | 47 | 4996 | 387 | 9.9 | 3.7 | 6.2 | 2.4 | 7.9 | 3.9 | 7.0 | 3.3 | 4.5 | 1.9 | 11.2 | 3.8 | 18.7 | 5.3 | 12.0 | 3.3 | 13.7 | 4.3 | 6.4 | 2.5 | 2.5 | 1.4 | 36120 | 3165 | 3.7 | 1.8 | 3.0 | 1.6 | 8.0 | 3.2 | 9.2 | 3.8 | 34.8 | 6.2 | 22.6 | 4.9 | 12.4 | 4.2 | 4.5 | 3.0 | 0.5 | 0.6 | 1.1 | 0.9 | 1380 | 72 | 24.3 | 6.1 | 0.7 | 0.8 | 1.6 | 1.2 | 22.0 | 5.8 | 15.4 | 4.3 | 0.6 | 0.8 | 2.4 | 1.8 | 12.4 | 3.5 | 18.4 | 5.3 | 1.2 | 1.2 | 3.4 | 2.9 | 13.7 | 5.2 | 11.8 | 3.3 | 1.2 | 1.0 | 4.5 | 2.2 | 6.1 | 2.3 | 22.6 | 4.5 | 9.3 | 3.0 | 10.7 | 3.7 | 2.6 | 2.2 | 6.3 | 3.2 | 1.1 | 0.9 |
| 3 | 8600000US01003 | ZCTA5 01003 | 42 | 42 | 24 | 38 | 0 | 19 | 14 | 20 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 4 | 7 | 0 | 19 | 0 | 19 | 2,500- | *** | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 24 | 38 | 18 | 22 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 1219 | 897 | 14 | 20 | 0 | 19 | 0 | 19 | 14 | 20 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 4 | 7 | 0 | 19 | 4 | 7 | 0 | 19 | 24 | 38 | 0 | 19 | 42 | 42 | 57.1 | 51.4 | 0.0 | 47.5 | 33.3 | 46.1 | 0.0 | 47.5 | 0.0 | 47.5 | 0.0 | 47.5 | 0.0 | 47.5 | 0.0 | 47.5 | 9.5 | 22.8 | 0.0 | 47.5 | 0.0 | 47.5 | 2,500- | *** | 0.0 | 47.5 | 0.0 | 47.5 | 0.0 | 47.5 | 0.0 | 47.5 | 57.1 | 51.4 | 42.9 | 51.4 | 0.0 | 47.5 | 0.0 | 47.5 | 0.0 | 47.5 | 0.0 | 47.5 | 1219 | 897 | 33.3 | 46.1 | 0.0 | 47.5 | 0.0 | 47.5 | 33.3 | 46.1 | 0.0 | 47.5 | 0.0 | 47.5 | 0.0 | 47.5 | 0.0 | 47.5 | 0.0 | 47.5 | 0.0 | 47.5 | 0.0 | 47.5 | 0.0 | 47.5 | 0.0 | 47.5 | 0.0 | 47.5 | 0.0 | 47.5 | 0.0 | 47.5 | 9.5 | 22.8 | 0.0 | 47.5 | 9.5 | 22.8 | 0.0 | 47.5 | 57.1 | 51.4 | 0.0 | 47.5 | 4 | 7 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 4 | 7 | 0 | 19 | 0 | 19 | - | ** | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 4 | 7 | 0 | 19 | 0 | 19 | 0 | 19 | (X) | (X) | - | ** | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 4 | 7 | 0 | 19 | 4 | 7 | 0 | 19 | 0 | 19 | (X) | (X) | 4 | 7 | 0.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | 100.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | - | ** | 0.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | 100.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | (X) | (X) | - | ** | 0.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | 100.0 | 100.0 | 0.0 | 100.0 | 100.0 | 100.0 | 0.0 | 100.0 | 0.0 | 100.0 | (X) | (X) | 38 | 42 | 24 | 38 | 0 | 19 | 14 | 20 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | - | ** | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 24 | 38 | 14 | 20 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | - | ** | 14 | 20 | 0 | 19 | 0 | 19 | 14 | 20 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 0 | 19 | 24 | 38 | 0 | 19 | 38 | 42 | 63.2 | 53.3 | 0.0 | 49.9 | 36.8 | 53.3 | 0.0 | 49.9 | 0.0 | 49.9 | 0.0 | 49.9 | 0.0 | 49.9 | 0.0 | 49.9 | 0.0 | 49.9 | 0.0 | 49.9 | 0.0 | 49.9 | - | ** | 0.0 | 49.9 | 0.0 | 49.9 | 0.0 | 49.9 | 0.0 | 49.9 | 63.2 | 53.3 | 36.8 | 53.3 | 0.0 | 49.9 | 0.0 | 49.9 | 0.0 | 49.9 | 0.0 | 49.9 | - | ** | 36.8 | 53.3 | 0.0 | 49.9 | 0.0 | 49.9 | 36.8 | 53.3 | 0.0 | 49.9 | 0.0 | 49.9 | 0.0 | 49.9 | 0.0 | 49.9 | 0.0 | 49.9 | 0.0 | 49.9 | 0.0 | 49.9 | 0.0 | 49.9 | 0.0 | 49.9 | 0.0 | 49.9 | 0.0 | 49.9 | 0.0 | 49.9 | 0.0 | 49.9 | 0.0 | 49.9 | 0.0 | 49.9 | 0.0 | 49.9 | 63.2 | 53.3 | 0.0 | 49.9 |
| 4 | 8600000US01005 | ZCTA5 01005 | 1944 | 232 | 51 | 50 | 27 | 44 | 34 | 50 | 17 | 27 | 91 | 125 | 52 | 53 | 285 | 117 | 511 | 176 | 154 | 100 | 345 | 125 | 377 | 122 | 67302 | 6752 | 0 | 17 | 98 | 81 | 391 | 152 | 355 | 173 | 435 | 142 | 358 | 131 | 156 | 75 | 47 | 48 | 57 | 55 | 47 | 43 | 1127 | 196 | 113 | 85 | 0 | 17 | 0 | 17 | 113 | 85 | 143 | 134 | 0 | 17 | 15 | 24 | 128 | 132 | 285 | 117 | 76 | 63 | 86 | 85 | 123 | 87 | 478 | 176 | 202 | 88 | 216 | 141 | 60 | 55 | 862 | 149 | 752 | 152 | 90 | 57 | 20 | 33 | 16 | 27 | 47 | 43 | 1944 | 232 | 2.6 | 2.6 | 1.4 | 2.2 | 1.7 | 2.6 | 0.9 | 1.4 | 4.7 | 6.3 | 2.7 | 2.7 | 14.7 | 5.7 | 26.3 | 8.5 | 7.9 | 5.1 | 17.7 | 6.2 | 19.4 | 6.1 | 67302 | 6752 | 0.0 | 1.8 | 5.0 | 4.1 | 20.1 | 7.2 | 18.3 | 8.1 | 22.4 | 6.6 | 18.4 | 6.6 | 8.0 | 4.0 | 2.4 | 2.4 | 2.9 | 2.8 | 2.4 | 2.3 | 1127 | 196 | 5.8 | 4.3 | 0.0 | 1.8 | 0.0 | 1.8 | 5.8 | 4.3 | 7.4 | 6.7 | 0.0 | 1.8 | 0.8 | 1.3 | 6.6 | 6.6 | 14.7 | 5.7 | 3.9 | 3.2 | 4.4 | 4.3 | 6.3 | 4.4 | 24.6 | 8.5 | 10.4 | 4.2 | 11.1 | 7.1 | 3.1 | 2.8 | 44.3 | 6.3 | 38.7 | 6.5 | 4.6 | 2.9 | 1.0 | 1.7 | 0.8 | 1.4 | 2.4 | 2.3 | 1674 | 244 | 51 | 50 | 27 | 44 | 34 | 50 | 17 | 27 | 16 | 28 | 36 | 44 | 285 | 117 | 422 | 151 | 91 | 56 | 332 | 125 | 363 | 124 | 69318 | 16089 | 0 | 17 | 98 | 81 | 391 | 152 | 224 | 140 | 343 | 131 | 358 | 131 | 156 | 75 | 47 | 48 | 57 | 55 | (X) | (X) | 1218 | 270 | 113 | 85 | 0 | 17 | 0 | 17 | 113 | 85 | 52 | 52 | 0 | 17 | 15 | 24 | 37 | 45 | 285 | 117 | 76 | 63 | 86 | 85 | 123 | 87 | 422 | 151 | 202 | 88 | 160 | 109 | 60 | 55 | 786 | 157 | 676 | 157 | 90 | 57 | 20 | 33 | 16 | 27 | (X) | (X) | 1674 | 244 | 3.0 | 2.9 | 1.6 | 2.6 | 2.0 | 3.0 | 1.0 | 1.6 | 1.0 | 1.6 | 2.2 | 2.6 | 17.0 | 6.3 | 25.2 | 7.9 | 5.4 | 3.3 | 19.8 | 7.2 | 21.7 | 7.0 | 69318 | 16089 | 0.0 | 2.1 | 5.9 | 4.6 | 23.4 | 7.9 | 13.4 | 7.8 | 20.5 | 7.2 | 21.4 | 7.8 | 9.3 | 4.5 | 2.8 | 2.8 | 3.4 | 3.3 | (X) | (X) | 1218 | 270 | 6.8 | 4.9 | 0.0 | 2.1 | 0.0 | 2.1 | 6.8 | 4.9 | 3.1 | 3.1 | 0.0 | 2.1 | 0.9 | 1.5 | 2.2 | 2.7 | 17.0 | 6.3 | 4.5 | 3.6 | 5.1 | 4.9 | 7.3 | 5.1 | 25.2 | 7.9 | 12.1 | 4.8 | 9.6 | 6.2 | 3.6 | 3.2 | 47.0 | 7.8 | 40.4 | 8.2 | 5.4 | 3.3 | 1.2 | 2.0 | 1.0 | 1.6 | (X) | (X) | 270 | 187 | 0 | 17 | 0 | 17 | 0 | 17 | 0 | 17 | 75 | 121 | 16 | 27 | 0 | 17 | 89 | 99 | 63 | 80 | 13 | 23 | 14 | 21 | 51964 | 30402 | 0 | 17 | 0 | 17 | 0 | 17 | 131 | 151 | 92 | 90 | 0 | 17 | 0 | 17 | 0 | 17 | 0 | 17 | 47 | 43 | 965 | 182 | 0 | 17 | 0 | 17 | 0 | 17 | 0 | 17 | 91 | 125 | 0 | 17 | 0 | 17 | 91 | 125 | 0 | 17 | 0 | 17 | 0 | 17 | 0 | 17 | 56 | 92 | 0 | 17 | 56 | 92 | 0 | 17 | 76 | 84 | 76 | 84 | 0 | 17 | 0 | 17 | 0 | 17 | 47 | 43 | 270 | 187 | 0.0 | 12.1 | 0.0 | 12.1 | 0.0 | 12.1 | 0.0 | 12.1 | 27.8 | 36.2 | 5.9 | 10.9 | 0.0 | 12.1 | 33.0 | 32.4 | 23.3 | 28.7 | 4.8 | 9.7 | 5.2 | 8.5 | 51964 | 30402 | 0.0 | 12.1 | 0.0 | 12.1 | 0.0 | 12.1 | 48.5 | 36.8 | 34.1 | 31.5 | 0.0 | 12.1 | 0.0 | 12.1 | 0.0 | 12.1 | 0.0 | 12.1 | 17.4 | 18.0 | 965 | 182 | 0.0 | 12.1 | 0.0 | 12.1 | 0.0 | 12.1 | 0.0 | 12.1 | 33.7 | 35.4 | 0.0 | 12.1 | 0.0 | 12.1 | 33.7 | 35.4 | 0.0 | 12.1 | 0.0 | 12.1 | 0.0 | 12.1 | 0.0 | 12.1 | 20.7 | 32.2 | 0.0 | 12.1 | 20.7 | 32.2 | 0.0 | 12.1 | 28.1 | 29.3 | 28.1 | 29.3 | 0.0 | 12.1 | 0.0 | 12.1 | 0.0 | 12.1 | 17.4 | 18.0 |
#select relevant columns and drop first row
income_subset = income[['GEO_ID', 'NAME','S2503_C01_013E']].drop(income.index[0]).copy()
#rename columns for better understanding
income_subset = income_subset.rename(columns={'S2503_C01_013E': 'median_household_income'})
#convert to numeric, fix name to match with ZCTA
income_subset['median_household_income'] = pd.to_numeric(income_subset['median_household_income'], errors='coerce')
income_subset['NAME'] = income_subset['NAME'].str.replace('ZCTA5', '')
income_subset = income_subset.rename(columns={'NAME':'ZCTA5CE10'})
income_subset['ZCTA5CE10'] = pd.to_numeric(income_subset['ZCTA5CE10'])
income_subset.head()
| GEO_ID | ZCTA5CE10 | median_household_income | |
|---|---|---|---|
| 1 | 8600000US01001 | 1001 | 63949.0 |
| 2 | 8600000US01002 | 1002 | 61159.0 |
| 3 | 8600000US01003 | 1003 | NaN |
| 4 | 8600000US01005 | 1005 | 67302.0 |
| 5 | 8600000US01007 | 1007 | 91191.0 |
#merge with ZCTA + age data
zcta_boston = zcta_boston.merge(income_subset, on='ZCTA5CE10')
zcta_boston.head()
| STATEFP10 | ZCTA5CE10 | GEOID10 | CLASSFP10 | MTFCC10 | FUNCSTAT10 | ALAND10 | AWATER10 | INTPTLAT10 | INTPTLON10 | PARTFLG10 | geometry | zip_code | PC_NAME | PC_TYPE | PA_NAME | PA_FIPS | CITY_TOWN | COUNTY | AREA_SQMI | SHAPE_AREA | SHAPE_LEN | GEO_ID_x | total_pop | pop_under_5 | pop_over_65 | pct_under_5 | pct_over_65 | GEO_ID_y | median_household_income | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 25 | 1905 | 2501905 | B5 | G6350 | S | 9219345 | 1195154 | +42.4659985 | -070.9757922 | N | MULTIPOLYGON (((243877.753 913824.638, 243872.... | 01905 | Lynn | NON UNIQUE | LYNN | 37490 | LYNN | Essex | 4.865583 | 1.260180e+07 | 23492.880715 | 8600000US01905 | 24580 | 1808 | 2418 | 0.073556 | 0.098373 | 8600000US01905 | 62927.0 |
| 1 | 25 | 1904 | 2501904 | B5 | G6350 | S | 11708211 | 1303900 | +42.4924563 | -070.9739297 | N | POLYGON ((245700.484 914778.700, 245667.412 91... | 01904 | Lynn | NON UNIQUE | LYNN | 37490 | LYNN | Essex | 4.228883 | 1.095276e+07 | 22465.853752 | 8600000US01904 | 17294 | 1117 | 2405 | 0.064589 | 0.139066 | 8600000US01904 | 81788.0 |
| 2 | 25 | 1915 | 2501915 | B5 | G6350 | S | 39091336 | 3958118 | +42.5702688 | -070.8669962 | N | MULTIPOLYGON (((250787.714 926889.372, 251155.... | 01915 | Beverly | NON UNIQUE | BEVERLY | 05595 | BEVERLY | Essex | 14.765718 | 3.824303e+07 | 50712.083048 | 8600000US01915 | 41885 | 2154 | 7023 | 0.051427 | 0.167673 | 8600000US01915 | 80586.0 |
| 3 | 25 | 2462 | 2502462 | B5 | G6350 | S | 1369318 | 69749 | +42.3287076 | -071.2559002 | N | MULTIPOLYGON (((222058.060 897313.471, 222020.... | 02462 | Newton Lower Falls | NON UNIQUE | NEWTON LOWER FALLS | 45665 | NEWTON | Middlesex | 0.586958 | 1.520215e+06 | 9916.529321 | 8600000US02462 | 1389 | 61 | 233 | 0.043916 | 0.167747 | 8600000US02462 | 115556.0 |
| 4 | 25 | 1760 | 2501760 | B5 | G6350 | S | 38359306 | 2599042 | +42.2848223 | -071.3488109 | N | POLYGON ((208131.535 893134.452, 208128.879 89... | 01760 | Natick | NON UNIQUE | NATICK | 43930 | NATICK, TOWN OF | Middlesex | 15.776077 | 4.085985e+07 | 40212.997681 | 8600000US01760 | 35761 | 2089 | 5550 | 0.058416 | 0.155197 | 8600000US01760 | 115446.0 |
#look at descriptive statistics for income
zcta_boston[['median_household_income']].describe()
| median_household_income | |
|---|---|
| count | 166.000000 |
| mean | 110625.861446 |
| std | 40304.194111 |
| min | 24446.000000 |
| 25% | 82978.500000 |
| 50% | 106223.500000 |
| 75% | 132789.250000 |
| max | 241190.000000 |
#plot by income
income_plot = zcta_boston.plot(column='median_household_income',
figsize=(11,9),
cmap='YlGn',
edgecolor='grey',
linewidth=0.5,
legend=True)
cx.add_basemap(income_plot,
crs=zcta_boston.crs,
source=cx.providers.CartoDB.Voyager)
plt.title('Median Household Income in Boston Area ZCTAs')
Text(0.5, 1.0, 'Median Household Income in Boston Area ZCTAs')
Income: Most vulnerable ZCTAs
zcta_boston[['zip_code','median_household_income','PC_NAME']].sort_values(by=['median_household_income'], ascending=True).head(10)
| zip_code | median_household_income | PC_NAME | |
|---|---|---|---|
| 37 | 01901 | 24446.0 | Lynn |
| 56 | 02119 | 31900.0 | Roxbury |
| 55 | 02121 | 32500.0 | Dorchester |
| 149 | 02120 | 38300.0 | Roxbury Crossing |
| 57 | 02115 | 43144.0 | Boston |
| 74 | 02047 | 45655.0 | Humarock |
| 162 | 02215 | 45856.0 | Boston |
| 127 | 01902 | 46224.0 | Lynn |
| 58 | 02163 | 53214.0 | Boston |
| 125 | 02111 | 53596.0 | Boston |
Income: Least vulnerable ZCTAs
zcta_boston[['zip_code','median_household_income','PC_NAME']].sort_values(by=['median_household_income'], ascending=False).head(10)
| zip_code | median_household_income | PC_NAME | |
|---|---|---|---|
| 39 | 02468 | 241190.0 | Waban |
| 69 | 02481 | 223917.0 | Wellesley Hills |
| 84 | 02493 | 207702.0 | Weston |
| 140 | 01770 | 198681.0 | Sherborn |
| 67 | 01741 | 195889.0 | Carlisle |
| 82 | 02420 | 195494.0 | Lexington |
| 80 | 02459 | 195336.0 | Newton Center |
| 158 | 01776 | 191310.0 | Sudbury |
| 81 | 01778 | 185906.0 | Wayland |
| 24 | 02421 | 178358.0 | Lexington |
Vulnerable ZCTAs are ZCTAs where median household income is lowest. This is true in ZCTAs located in Lynn, Roxbury, Dorchester, Roxbury Crossing, and Boston. Least vulnerable (highest income) ZCTAs are in Waban, Wellesley Hills, Weston, Sherborn, and Carlisle.
Land surface temperature, derived from Landsat 8 satellite imagery, is a proxy for estimating urban heat island effect (“Climate Vulnerability in Greater Boston”). Higher land surface temperature indicates higher vulnerability to extreme heat. The imagery used in this analysis was taken on a cloudless day on May 21, 2020.
#extract information from band10, which is a calculation of land surface temperature
with rasterio.open('data/Landsat/LC08_L2SP_BOS_20200521_02_T1_ST_B10.TIF') as raster:
shape = raster.shape
transform = raster.transform
res = raster.res
crs = raster.crs
nodata = raster.nodata
bounds = raster.bounds
band10 = raster.read(1).astype('float64') #convert to float type for calculations
#according to documentation, 0 values represent No Data. Set pixels equal to 0 to np.NaN
band10[band10 == 0] = np.NaN
Scale, Offset, Convert to Celsius
From Documentation: "A scale factor must be applied to both Collection 1 and Collection 2 Landsat Level-2 surface reflectance and surface temperature products before using the data. Landsat Collection 2 surface temperature has a scale factor of 0.00341802 and an additional offset of 149.0 per pixel."
#rescale and offset, then convert to celsius
land_surface_temp = ((band10 * 0.00341802) + 149) - 273.15
land_surface_temp
array([[25.4225552 , 25.47724352, 25.55243996, ..., 9.14252594,
9.08783762, 9.00922316],
[25.41571916, 25.4396453 , 25.46357144, ..., 9.10834574,
9.0502394 , 8.97162494],
[25.36103084, 25.36786688, 25.34735876, ..., 9.06391148,
9.02631326, 8.981879 ],
...,
[23.60758658, 23.53239014, 23.4913739 , ..., 12.10253126,
12.11620334, 12.12303938],
[23.84342996, 23.73405332, 23.62125866, ..., 12.06493304,
12.07860512, 12.08885918],
[24.29119058, 24.0040769 , 23.7989957 , ..., 12.04784294,
12.05126096, 12.058097 ]])
#plot land surface temperature raster with ZCTA
ax = zcta_boston.plot(facecolor='None', edgecolor='black', linewidth=0.7, alpha=0.5)
show(land_surface_temp, ax=ax, transform=transform, cmap='RdYlBu_r')
plt.show()
#summarize by ZCTA using zonal statistics
lst_stats = pd.DataFrame(zonal_stats(zcta_boston, land_surface_temp, affine=transform, stats=['mean', 'count'], nodata = np.NaN))
lst_stats.head()
| mean | count | |
|---|---|---|
| 0 | 31.375325 | 10876 |
| 1 | 28.854271 | 14455 |
| 2 | 27.588073 | 44305 |
| 3 | 30.059721 | 1588 |
| 4 | 28.718877 | 45515 |
#Add the calculated average LST to the ZCTA zones GeoDataFrame
zcta_boston = zcta_boston.join(lst_stats)
#rename mean and count columns
zcta_boston = zcta_boston.rename(columns={'mean':'lst_mean', 'count':'lst_count'})
zcta_boston.head()
| STATEFP10 | ZCTA5CE10 | GEOID10 | CLASSFP10 | MTFCC10 | FUNCSTAT10 | ALAND10 | AWATER10 | INTPTLAT10 | INTPTLON10 | PARTFLG10 | geometry | zip_code | PC_NAME | PC_TYPE | PA_NAME | PA_FIPS | CITY_TOWN | COUNTY | AREA_SQMI | SHAPE_AREA | SHAPE_LEN | GEO_ID_x | total_pop | pop_under_5 | pop_over_65 | pct_under_5 | pct_over_65 | GEO_ID_y | median_household_income | lst_mean | lst_count | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 25 | 1905 | 2501905 | B5 | G6350 | S | 9219345 | 1195154 | +42.4659985 | -070.9757922 | N | MULTIPOLYGON (((243877.753 913824.638, 243872.... | 01905 | Lynn | NON UNIQUE | LYNN | 37490 | LYNN | Essex | 4.865583 | 1.260180e+07 | 23492.880715 | 8600000US01905 | 24580 | 1808 | 2418 | 0.073556 | 0.098373 | 8600000US01905 | 62927.0 | 31.375325 | 10876 |
| 1 | 25 | 1904 | 2501904 | B5 | G6350 | S | 11708211 | 1303900 | +42.4924563 | -070.9739297 | N | POLYGON ((245700.484 914778.700, 245667.412 91... | 01904 | Lynn | NON UNIQUE | LYNN | 37490 | LYNN | Essex | 4.228883 | 1.095276e+07 | 22465.853752 | 8600000US01904 | 17294 | 1117 | 2405 | 0.064589 | 0.139066 | 8600000US01904 | 81788.0 | 28.854271 | 14455 |
| 2 | 25 | 1915 | 2501915 | B5 | G6350 | S | 39091336 | 3958118 | +42.5702688 | -070.8669962 | N | MULTIPOLYGON (((250787.714 926889.372, 251155.... | 01915 | Beverly | NON UNIQUE | BEVERLY | 05595 | BEVERLY | Essex | 14.765718 | 3.824303e+07 | 50712.083048 | 8600000US01915 | 41885 | 2154 | 7023 | 0.051427 | 0.167673 | 8600000US01915 | 80586.0 | 27.588073 | 44305 |
| 3 | 25 | 2462 | 2502462 | B5 | G6350 | S | 1369318 | 69749 | +42.3287076 | -071.2559002 | N | MULTIPOLYGON (((222058.060 897313.471, 222020.... | 02462 | Newton Lower Falls | NON UNIQUE | NEWTON LOWER FALLS | 45665 | NEWTON | Middlesex | 0.586958 | 1.520215e+06 | 9916.529321 | 8600000US02462 | 1389 | 61 | 233 | 0.043916 | 0.167747 | 8600000US02462 | 115556.0 | 30.059721 | 1588 |
| 4 | 25 | 1760 | 2501760 | B5 | G6350 | S | 38359306 | 2599042 | +42.2848223 | -071.3488109 | N | POLYGON ((208131.535 893134.452, 208128.879 89... | 01760 | Natick | NON UNIQUE | NATICK | 43930 | NATICK, TOWN OF | Middlesex | 15.776077 | 4.085985e+07 | 40212.997681 | 8600000US01760 | 35761 | 2089 | 5550 | 0.058416 | 0.155197 | 8600000US01760 | 115446.0 | 28.718877 | 45515 |
#look at descriptive statistics for average LST
zcta_boston[['lst_mean']].describe()
| lst_mean | |
|---|---|
| count | 170.000000 |
| mean | 30.472519 |
| std | 3.792784 |
| min | 22.582156 |
| 25% | 27.458046 |
| 50% | 29.823989 |
| 75% | 33.581746 |
| max | 39.462947 |
#plot by lst
lst_plot = zcta_boston.plot(column='lst_mean',
figsize=(11,9),
cmap='RdYlBu_r',
edgecolor='grey',
linewidth=0.5,
legend=True)
cx.add_basemap(lst_plot,
crs=zcta_boston.crs,
source=cx.providers.CartoDB.Voyager)
plt.title('Avg Land Surface Temperature across Boston MPO ZCTA boundaries (degrees Celsius)')
Text(0.5, 1.0, 'Avg Land Surface Temperature across Boston MPO ZCTA boundaries (degrees Celsius)')
Land Surface Temperature: Most vulnerable ZCTAs
zcta_boston[['zip_code','lst_mean','PC_NAME']].sort_values(by=['lst_mean'], ascending=False).head(10)
| zip_code | lst_mean | PC_NAME | |
|---|---|---|---|
| 53 | 02113 | 39.462947 | Boston |
| 77 | 02199 | 39.288696 | NaN |
| 153 | 02143 | 38.744878 | Somerville |
| 15 | 02118 | 38.286949 | Boston |
| 12 | 02134 | 37.605995 | Allston |
| 98 | 02150 | 37.583448 | Chelsea |
| 109 | 02141 | 37.098508 | Cambridge |
| 107 | 02145 | 36.902941 | Somerville |
| 26 | 02149 | 36.889828 | Everett |
| 41 | 02144 | 36.829086 | Somerville |
Land Surface Temperature: Least vulnerable ZCTAs
zcta_boston[['zip_code','lst_mean','PC_NAME']].sort_values(by=['lst_mean'], ascending=True).head(10)
| zip_code | lst_mean | PC_NAME | |
|---|---|---|---|
| 128 | 01944 | 22.582156 | Manchester |
| 18 | 01966 | 22.705951 | Rockport |
| 59 | 01929 | 24.451524 | Essex |
| 145 | 02061 | 24.680846 | Norwell |
| 72 | 02030 | 24.937993 | Dover |
| 104 | 01984 | 24.996933 | Wenham |
| 140 | 01770 | 25.032448 | Sherborn |
| 144 | 02025 | 25.032630 | Cohasset |
| 61 | 01982 | 25.112523 | South Hamilton |
| 29 | 02067 | 25.326080 | Sharon |
ZCTAs with higher average land surface temperature are clustered toward Boston's urban core in Boston, Somerville, Allston, Chelsea, and Cambridge, with some outlying areas having higher average land surface temperature than their surroundings. ZCTAs with lowest average land surface temperature are found in Manchester, Rockport, Essex, Norwell, and Dover.
The Normalized Differential Vegetation Index (NDVI) is a standardized vegetation index which is calculated using near infra-red (band 5) and red (band 4) bands. Vegetation provides shade and cooling effects. Areas with lower vegetation (or lower NDVI) are more vulnerable to health impacts from extreme heat (Wasser 2019).
#https://www.hatarilabs.com/ih-en/ndvi-calculation-from-landsat8-images-with-python-3-and-rasterio-tutorial
#read in bands 4 and 5
band4 = rasterio.open('data/Landsat/LC08_L2SP_BOS_20200521_02_T1_RS_B4.TIF') #red
band5 = rasterio.open('data/Landsat/LC08_L2SP_BOS_20200521_02_T1_RS_B5.TIF') #nir
band4.meta == band5.meta
True
#generate nir and red objects as arrays in float64 format
red = band4.read(1).astype('float64')
nir = band5.read(1).astype('float64')
#ndvi calculation, empty cells or nodata cells are reported as 0
ndvi=np.where(
(nir+red)==0.,
0,
(nir-red)/(nir+red))
#plot land surface temperature with ZCTA
ax = zcta_boston.plot(facecolor='None', edgecolor='black', linewidth=0.7, alpha=0.5)
show(ndvi, ax=ax, transform=transform, cmap='YlGn')
plt.show()
#summarize by ZCTA using zonal statistics
ndvi_stats = pd.DataFrame(zonal_stats(zcta_boston, ndvi, affine=transform, stats=['mean', 'count'], nodata = np.NaN))
ndvi_stats.head()
| mean | count | |
|---|---|---|
| 0 | 0.189563 | 10876 |
| 1 | 0.243954 | 14455 |
| 2 | 0.278216 | 44305 |
| 3 | 0.273047 | 1588 |
| 4 | 0.280098 | 45515 |
#Add the calculated average ndvi to the ZCTA zones GeoDataFrame
zcta_boston = zcta_boston.join(ndvi_stats)
#rename columns
zcta_boston = zcta_boston.rename(columns={'mean':'ndvi_mean', 'count':'ndvi_count'})
zcta_boston.head()
| STATEFP10 | ZCTA5CE10 | GEOID10 | CLASSFP10 | MTFCC10 | FUNCSTAT10 | ALAND10 | AWATER10 | INTPTLAT10 | INTPTLON10 | PARTFLG10 | geometry | zip_code | PC_NAME | PC_TYPE | PA_NAME | PA_FIPS | CITY_TOWN | COUNTY | AREA_SQMI | SHAPE_AREA | SHAPE_LEN | GEO_ID_x | total_pop | pop_under_5 | pop_over_65 | pct_under_5 | pct_over_65 | GEO_ID_y | median_household_income | lst_mean | lst_count | ndvi_mean | ndvi_count | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 25 | 1905 | 2501905 | B5 | G6350 | S | 9219345 | 1195154 | +42.4659985 | -070.9757922 | N | MULTIPOLYGON (((243877.753 913824.638, 243872.... | 01905 | Lynn | NON UNIQUE | LYNN | 37490 | LYNN | Essex | 4.865583 | 1.260180e+07 | 23492.880715 | 8600000US01905 | 24580 | 1808 | 2418 | 0.073556 | 0.098373 | 8600000US01905 | 62927.0 | 31.375325 | 10876 | 0.189563 | 10876 |
| 1 | 25 | 1904 | 2501904 | B5 | G6350 | S | 11708211 | 1303900 | +42.4924563 | -070.9739297 | N | POLYGON ((245700.484 914778.700, 245667.412 91... | 01904 | Lynn | NON UNIQUE | LYNN | 37490 | LYNN | Essex | 4.228883 | 1.095276e+07 | 22465.853752 | 8600000US01904 | 17294 | 1117 | 2405 | 0.064589 | 0.139066 | 8600000US01904 | 81788.0 | 28.854271 | 14455 | 0.243954 | 14455 |
| 2 | 25 | 1915 | 2501915 | B5 | G6350 | S | 39091336 | 3958118 | +42.5702688 | -070.8669962 | N | MULTIPOLYGON (((250787.714 926889.372, 251155.... | 01915 | Beverly | NON UNIQUE | BEVERLY | 05595 | BEVERLY | Essex | 14.765718 | 3.824303e+07 | 50712.083048 | 8600000US01915 | 41885 | 2154 | 7023 | 0.051427 | 0.167673 | 8600000US01915 | 80586.0 | 27.588073 | 44305 | 0.278216 | 44305 |
| 3 | 25 | 2462 | 2502462 | B5 | G6350 | S | 1369318 | 69749 | +42.3287076 | -071.2559002 | N | MULTIPOLYGON (((222058.060 897313.471, 222020.... | 02462 | Newton Lower Falls | NON UNIQUE | NEWTON LOWER FALLS | 45665 | NEWTON | Middlesex | 0.586958 | 1.520215e+06 | 9916.529321 | 8600000US02462 | 1389 | 61 | 233 | 0.043916 | 0.167747 | 8600000US02462 | 115556.0 | 30.059721 | 1588 | 0.273047 | 1588 |
| 4 | 25 | 1760 | 2501760 | B5 | G6350 | S | 38359306 | 2599042 | +42.2848223 | -071.3488109 | N | POLYGON ((208131.535 893134.452, 208128.879 89... | 01760 | Natick | NON UNIQUE | NATICK | 43930 | NATICK, TOWN OF | Middlesex | 15.776077 | 4.085985e+07 | 40212.997681 | 8600000US01760 | 35761 | 2089 | 5550 | 0.058416 | 0.155197 | 8600000US01760 | 115446.0 | 28.718877 | 45515 | 0.280098 | 45515 |
#look at descriptive statistics for average LST
zcta_boston[['ndvi_mean']].describe()
| ndvi_mean | |
|---|---|
| count | 170.000000 |
| mean | 0.235847 |
| std | 0.079117 |
| min | 0.040025 |
| 25% | 0.190884 |
| 50% | 0.262704 |
| 75% | 0.294592 |
| max | 0.338963 |
#plot by ndvi
ndvi_plot = zcta_boston.plot(column='ndvi_mean',
figsize=(11,9),
cmap='RdYlGn',
edgecolor='grey',
linewidth=0.5,
legend=True)
cx.add_basemap(ndvi_plot,
crs=zcta_boston.crs,
source=cx.providers.CartoDB.Voyager)
plt.title('Avg NDVI across Boston MPO ZCTA boundaries')
Text(0.5, 1.0, 'Avg NDVI across Boston MPO ZCTA boundaries')
Vegetation: Most vulnerable ZCTAs
zcta_boston[['zip_code','ndvi_mean','PC_NAME']].sort_values(by=['ndvi_mean'], ascending=True).head(10)
| zip_code | ndvi_mean | PC_NAME | |
|---|---|---|---|
| 126 | 02210 | 0.040025 | Boston |
| 77 | 02199 | 0.040439 | NaN |
| 125 | 02111 | 0.045444 | Boston |
| 34 | 02109 | 0.047322 | Boston |
| 135 | 02142 | 0.050339 | Cambridge |
| 53 | 02113 | 0.058591 | Boston |
| 150 | 02203 | 0.061094 | NaN |
| 37 | 01901 | 0.067738 | Lynn |
| 14 | 02110 | 0.068327 | Boston |
| 94 | 02114 | 0.074985 | Boston |
Vegetation: Least vulnerable ZCTAs
zcta_boston[['zip_code','ndvi_mean','PC_NAME']].sort_values(by=['ndvi_mean'], ascending=False).head(10)
| zip_code | ndvi_mean | PC_NAME | |
|---|---|---|---|
| 36 | 01740 | 0.338963 | Bolton |
| 140 | 01770 | 0.335598 | Sherborn |
| 72 | 02030 | 0.335193 | Dover |
| 67 | 01741 | 0.329376 | Carlisle |
| 84 | 02493 | 0.324320 | Weston |
| 47 | 01775 | 0.322601 | Stow |
| 86 | 02053 | 0.320509 | Medway |
| 136 | 01746 | 0.320148 | Holliston |
| 115 | 01773 | 0.320107 | Lincoln |
| 62 | 01983 | 0.319900 | Topsfield |
Vegetation follows a similar pattern as Land Surface Temperature, with areas closer to the urban core experiencing less vegetation than outlying suburbs. ZCTAs located in Boston, Lynn, and Cambridge have the lowest NDVI values. ZCTAs in Bolton, Sherborn, Dover, Carlisle, and Weston have the highest NDVI values.
band4.close()
band5.close()
Easy access to hospitals is important for getting treatment for health issues that arise from exposure to extreme heat (Reid Colleen E. et al. 2009). To represent hospital access, this analysis uses count of acute care hospitals (from MassGIS) per ZCTA.
#read in hospital shapefile
hospital_points = gpd.read_file('data/HOSPITALS_PT/HOSPITALS_PT.shp')
hospital_points.crs
<Projected CRS: EPSG:26986> Name: NAD83 / Massachusetts Mainland Axis Info [cartesian]: - X[east]: Easting (metre) - Y[north]: Northing (metre) Area of Use: - name: United States (USA) - Massachusetts onshore - counties of Barnstable; Berkshire; Bristol; Essex; Franklin; Hampden; Hampshire; Middlesex; Norfolk; Plymouth; Suffolk; Worcester. - bounds: (-73.5, 41.46, -69.86, 42.89) Coordinate Operation: - name: SPCS83 Massachusetts Mainland zone (meters) - method: Lambert Conic Conformal (2SP) Datum: North American Datum 1983 - Ellipsoid: GRS 1980 - Prime Meridian: Greenwich
#reproject hospital points
hospital_points = hospital_points.to_crs('epsg:6491')
hospital_points.head()
| IDNUMBER | DPHID | NAME | SHORTNAME | ADDRESS | TOWN | GEOG_TOWN | ZIPCODE | CHIAREGION | TELEPHONE | COHORT | HOSPSYSTEM | TAXSTATUS | BEDCOUNT | ER_STATUS | TRAUMA_ADU | TRAUMA_PED | SPEPUBFUND | FYE | MADID | EMSREGION | geometry | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2069 | 2069 | Beth Israel Deaconess Medical Center East | BIDMC East | 330 Brookline Avenue | Boston | BOSTON | 02215 | Metro Boston | (617) 667-7000 | Academic Medical Center | CareGroup | Non-profit | 248 | N | None | None | Not Applicable | 2017-09-30 | 35022096 | 4 | POINT (232494.091 898890.122) |
| 1 | 2085 | 2085 | Steward St. Elizabeth's Medical Center | St. Elizabeth's Medical Center | 736 Cambridge Street | Brighton | BOSTON | 02135 | Metro Boston | (617) 789-3000 | Teaching Hospital | Steward Health Care System | For profit | 252 | Y | None | None | Not Applicable | 2017-12-31 | 35156980 | 4 | POINT (229003.958 899958.291) |
| 2 | 2299 | 2299 | Tufts Medical Center | Tufts Medical Center | 800 Washington Street | Boston | BOSTON | 02111 | Metro Boston | (617) 636-5000 | Academic Medical Center | Wellforce | Non-profit | 415 | Y | Level 1 | Level 1 | Not Applicable | 2017-09-30 | 35145764 | 4 | POINT (235963.109 899998.149) |
| 3 | 2103 | 2103 | UMass Memorial Marlborough Hospital | Marlborough Hospital | 157 Union Street | Marlborough | MARLBOROUGH | 01752 | Metro West | (508) 481-5000 | Community High Public Payer Hospital | UMass Memorial Health Care | Non-profit | 79 | Y | None | None | CHART | 2017-09-30 | 1613538 | 4 | POINT (195490.775 900535.402) |
| 4 | 2167 | 2167 | Massachusetts Eye and Ear Infirmary | Massachusetts Eye and Ear Infirmary | 243 Charles Street | Boston | BOSTON | 02114 | Metro Boston | (617) 523-7900 | Specialty Hospital | Not Applicable | Non-profit | 41 | Y | None | None | Not Applicable | 2017-09-30 | 35163139 | 4 | POINT (235396.614 901452.905) |
#spatial join: hospital points within Boston MPO ZCTA boundaries
hospital_join = gpd.sjoin(hospital_points, zcta_boston, op='within')
hospital_join.head()
| IDNUMBER | DPHID | NAME | SHORTNAME | ADDRESS | TOWN | GEOG_TOWN | ZIPCODE | CHIAREGION | TELEPHONE | COHORT | HOSPSYSTEM | TAXSTATUS | BEDCOUNT | ER_STATUS | TRAUMA_ADU | TRAUMA_PED | SPEPUBFUND | FYE | MADID | EMSREGION | geometry | index_right | STATEFP10 | ZCTA5CE10 | GEOID10 | CLASSFP10 | MTFCC10 | FUNCSTAT10 | ALAND10 | AWATER10 | INTPTLAT10 | INTPTLON10 | PARTFLG10 | zip_code | PC_NAME | PC_TYPE | PA_NAME | PA_FIPS | CITY_TOWN | COUNTY | AREA_SQMI | SHAPE_AREA | SHAPE_LEN | GEO_ID_x | total_pop | pop_under_5 | pop_over_65 | pct_under_5 | pct_over_65 | GEO_ID_y | median_household_income | lst_mean | lst_count | ndvi_mean | ndvi_count | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2069 | 2069 | Beth Israel Deaconess Medical Center East | BIDMC East | 330 Brookline Avenue | Boston | BOSTON | 02215 | Metro Boston | (617) 667-7000 | Academic Medical Center | CareGroup | Non-profit | 248 | N | None | None | Not Applicable | 2017-09-30 | 35022096 | 4 | POINT (232494.091 898890.122) | 57 | 25 | 2115 | 2502115 | B5 | G6350 | S | 1834246 | 103612 | +42.3363418 | -071.1041760 | N | 02115 | Boston | NON UNIQUE | BOSTON | 07000 | BOSTON | Suffolk | 0.774890 | 1.929632e+06 | 11447.862823 | 8600000US02115 | 28652 | 297 | 2260 | 0.010366 | 0.078878 | 8600000US02115 | 43144.0 | 36.541984 | 2154 | 0.096410 | 2154 |
| 64 | 2341 | 2341 | Brigham and Women's Hospital | Brigham and Women's Hospital | 75 Francis Street | Boston | BOSTON | 02115 | Metro Boston | (617) 732-5500 | Academic Medical Center | Partners HealthCare System | Non-profit | 763 | Y | Level 1 | None | None | None | 35158148 | 4 | POINT (232347.622 898476.959) | 57 | 25 | 2115 | 2502115 | B5 | G6350 | S | 1834246 | 103612 | +42.3363418 | -071.1041760 | N | 02115 | Boston | NON UNIQUE | BOSTON | 07000 | BOSTON | Suffolk | 0.774890 | 1.929632e+06 | 11447.862823 | 8600000US02115 | 28652 | 297 | 2260 | 0.010366 | 0.078878 | 8600000US02115 | 43144.0 | 36.541984 | 2154 | 0.096410 | 2154 |
| 66 | 2139 | 2139 | Boston Children's Hospital | Boston Children's Hospital | 300 Longwood Avenue | Boston | BOSTON | 02115 | Metro Boston | (617) 355-6000 | Specialty Hospital | Not Applicable | Non-profit | 404 | Y | None | Level 1 | Not Applicable | 2017-09-30 | 35087170 | 4 | POINT (232561.041 898628.934) | 57 | 25 | 2115 | 2502115 | B5 | G6350 | S | 1834246 | 103612 | +42.3363418 | -071.1041760 | N | 02115 | Boston | NON UNIQUE | BOSTON | 07000 | BOSTON | Suffolk | 0.774890 | 1.929632e+06 | 11447.862823 | 8600000US02115 | 28652 | 297 | 2260 | 0.010366 | 0.078878 | 8600000US02115 | 43144.0 | 36.541984 | 2154 | 0.096410 | 2154 |
| 1 | 2085 | 2085 | Steward St. Elizabeth's Medical Center | St. Elizabeth's Medical Center | 736 Cambridge Street | Brighton | BOSTON | 02135 | Metro Boston | (617) 789-3000 | Teaching Hospital | Steward Health Care System | For profit | 252 | Y | None | None | Not Applicable | 2017-12-31 | 35156980 | 4 | POINT (229003.958 899958.291) | 75 | 25 | 2135 | 2502135 | B5 | G6350 | S | 6824138 | 572755 | +42.3496885 | -071.1539638 | N | 02135 | Brighton | NON UNIQUE | BRIGHTON | 08330 | BROOKLINE, TOWN OF | Norfolk | 0.003190 | 8.261696e+03 | 441.612813 | 8600000US02135 | 44951 | 1784 | 5528 | 0.039688 | 0.122978 | 8600000US02135 | 78416.0 | 34.408713 | 8221 | 0.169036 | 8221 |
| 1 | 2085 | 2085 | Steward St. Elizabeth's Medical Center | St. Elizabeth's Medical Center | 736 Cambridge Street | Brighton | BOSTON | 02135 | Metro Boston | (617) 789-3000 | Teaching Hospital | Steward Health Care System | For profit | 252 | Y | None | None | Not Applicable | 2017-12-31 | 35156980 | 4 | POINT (229003.958 899958.291) | 76 | 25 | 2135 | 2502135 | B5 | G6350 | S | 6824138 | 572755 | +42.3496885 | -071.1539638 | N | 02135 | Brighton | NON UNIQUE | BRIGHTON | 08330 | BOSTON | Suffolk | 2.530173 | 6.553117e+06 | 13892.056849 | 8600000US02135 | 44951 | 1784 | 5528 | 0.039688 | 0.122978 | 8600000US02135 | 78416.0 | 34.408713 | 8221 | 0.169036 | 8221 |
#plot hospital points against ZCTA boundaries
ax = zcta_boston.plot(facecolor='None', edgecolor='black', linewidth=0.7, alpha=0.5)
hospital_join.plot(ax=ax)
<AxesSubplot:>
#use groupby to count the number of listings by ZCTA. as_index=false adds the index numbers so you can join ZCTA names later
zcta_hospitals_count = hospital_join.groupby(
hospital_join['ZCTA5CE10'],
as_index=False,
)['IDNUMBER'].count()
#rename the columns
zcta_hospitals_count.columns = ['ZCTA5CE10', 'hospitalscount']
zcta_hospitals_count.head()
| ZCTA5CE10 | hospitalscount | |
|---|---|---|
| 0 | 1702 | 1 |
| 1 | 1742 | 1 |
| 2 | 1752 | 1 |
| 3 | 1757 | 1 |
| 4 | 1760 | 1 |
#join hospital counts to ZCTAs
zcta_boston = zcta_boston.merge(
zcta_hospitals_count,
on='ZCTA5CE10',
how='left')
#replace np.NaN with 0
zcta_boston['hospitalscount'] = zcta_boston['hospitalscount'].replace({np.NaN:0})
zcta_boston.head()
| STATEFP10 | ZCTA5CE10 | GEOID10 | CLASSFP10 | MTFCC10 | FUNCSTAT10 | ALAND10 | AWATER10 | INTPTLAT10 | INTPTLON10 | PARTFLG10 | geometry | zip_code | PC_NAME | PC_TYPE | PA_NAME | PA_FIPS | CITY_TOWN | COUNTY | AREA_SQMI | SHAPE_AREA | SHAPE_LEN | GEO_ID_x | total_pop | pop_under_5 | pop_over_65 | pct_under_5 | pct_over_65 | GEO_ID_y | median_household_income | lst_mean | lst_count | ndvi_mean | ndvi_count | hospitalscount | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 25 | 1905 | 2501905 | B5 | G6350 | S | 9219345 | 1195154 | +42.4659985 | -070.9757922 | N | MULTIPOLYGON (((243877.753 913824.638, 243872.... | 01905 | Lynn | NON UNIQUE | LYNN | 37490 | LYNN | Essex | 4.865583 | 1.260180e+07 | 23492.880715 | 8600000US01905 | 24580 | 1808 | 2418 | 0.073556 | 0.098373 | 8600000US01905 | 62927.0 | 31.375325 | 10876 | 0.189563 | 10876 | 0.0 |
| 1 | 25 | 1904 | 2501904 | B5 | G6350 | S | 11708211 | 1303900 | +42.4924563 | -070.9739297 | N | POLYGON ((245700.484 914778.700, 245667.412 91... | 01904 | Lynn | NON UNIQUE | LYNN | 37490 | LYNN | Essex | 4.228883 | 1.095276e+07 | 22465.853752 | 8600000US01904 | 17294 | 1117 | 2405 | 0.064589 | 0.139066 | 8600000US01904 | 81788.0 | 28.854271 | 14455 | 0.243954 | 14455 | 1.0 |
| 2 | 25 | 1915 | 2501915 | B5 | G6350 | S | 39091336 | 3958118 | +42.5702688 | -070.8669962 | N | MULTIPOLYGON (((250787.714 926889.372, 251155.... | 01915 | Beverly | NON UNIQUE | BEVERLY | 05595 | BEVERLY | Essex | 14.765718 | 3.824303e+07 | 50712.083048 | 8600000US01915 | 41885 | 2154 | 7023 | 0.051427 | 0.167673 | 8600000US01915 | 80586.0 | 27.588073 | 44305 | 0.278216 | 44305 | 1.0 |
| 3 | 25 | 2462 | 2502462 | B5 | G6350 | S | 1369318 | 69749 | +42.3287076 | -071.2559002 | N | MULTIPOLYGON (((222058.060 897313.471, 222020.... | 02462 | Newton Lower Falls | NON UNIQUE | NEWTON LOWER FALLS | 45665 | NEWTON | Middlesex | 0.586958 | 1.520215e+06 | 9916.529321 | 8600000US02462 | 1389 | 61 | 233 | 0.043916 | 0.167747 | 8600000US02462 | 115556.0 | 30.059721 | 1588 | 0.273047 | 1588 | 1.0 |
| 4 | 25 | 1760 | 2501760 | B5 | G6350 | S | 38359306 | 2599042 | +42.2848223 | -071.3488109 | N | POLYGON ((208131.535 893134.452, 208128.879 89... | 01760 | Natick | NON UNIQUE | NATICK | 43930 | NATICK, TOWN OF | Middlesex | 15.776077 | 4.085985e+07 | 40212.997681 | 8600000US01760 | 35761 | 2089 | 5550 | 0.058416 | 0.155197 | 8600000US01760 | 115446.0 | 28.718877 | 45515 | 0.280098 | 45515 | 1.0 |
#plot by number of hospitals
hosp_plot = zcta_boston.plot(column='hospitalscount',
figsize=(11,9),
cmap='Oranges',
edgecolor='grey',
linewidth=0.5,
legend=True)
cx.add_basemap(hosp_plot,
crs=zcta_boston.crs,
source=cx.providers.CartoDB.Voyager)
plt.title('Number of Acute Care Hospitals per ZCTA boundary in Boston MPO region')
Text(0.5, 1.0, 'Number of Acute Care Hospitals per ZCTA boundary in Boston MPO region')
Hospital Count: Least vulnerable ZCTAs
#sort by ZCTAs with highest number of hospitals
zcta_boston[['zip_code','hospitalscount','PC_NAME']].sort_values(by=['hospitalscount'], ascending=False).head(10)
| zip_code | hospitalscount | PC_NAME | |
|---|---|---|---|
| 94 | 02114 | 3.0 | Boston |
| 57 | 02115 | 3.0 | Boston |
| 15 | 02118 | 2.0 | Boston |
| 76 | 02135 | 2.0 | Brighton |
| 162 | 02215 | 2.0 | Boston |
| 75 | 02135 | 2.0 | Brighton |
| 151 | 01757 | 1.0 | Milford |
| 26 | 02149 | 1.0 | Everett |
| 108 | 02138 | 1.0 | Cambridge |
| 30 | 02492 | 1.0 | Needham |
ZCTAs witout urgent care hospitals are the most vulnerable, yet are also the most common. The least vulnerable ZCTAs (areas with the most urgent care hospitals) can be found in Boston.
Now that all of the indicator variables are prepared, let's put it all together in a vulnerability model.
#look at composite table with all indicators added
zcta_boston.info()
<class 'geopandas.geodataframe.GeoDataFrame'> Int64Index: 170 entries, 0 to 169 Data columns (total 35 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 STATEFP10 170 non-null object 1 ZCTA5CE10 170 non-null int64 2 GEOID10 170 non-null object 3 CLASSFP10 170 non-null object 4 MTFCC10 170 non-null object 5 FUNCSTAT10 170 non-null object 6 ALAND10 170 non-null int64 7 AWATER10 170 non-null int64 8 INTPTLAT10 170 non-null object 9 INTPTLON10 170 non-null object 10 PARTFLG10 170 non-null object 11 geometry 170 non-null geometry 12 zip_code 170 non-null object 13 PC_NAME 166 non-null object 14 PC_TYPE 166 non-null object 15 PA_NAME 166 non-null object 16 PA_FIPS 166 non-null object 17 CITY_TOWN 166 non-null object 18 COUNTY 166 non-null object 19 AREA_SQMI 166 non-null float64 20 SHAPE_AREA 166 non-null float64 21 SHAPE_LEN 166 non-null float64 22 GEO_ID_x 170 non-null object 23 total_pop 170 non-null int64 24 pop_under_5 170 non-null int64 25 pop_over_65 170 non-null int64 26 pct_under_5 170 non-null float64 27 pct_over_65 170 non-null float64 28 GEO_ID_y 170 non-null object 29 median_household_income 166 non-null float64 30 lst_mean 170 non-null float64 31 lst_count 170 non-null int64 32 ndvi_mean 170 non-null float64 33 ndvi_count 170 non-null int64 34 hospitalscount 170 non-null float64 dtypes: float64(9), geometry(1), int64(8), object(17) memory usage: 47.8+ KB
#simplify table to only include heat vulnerability variables
boston_heat_vulnerable = zcta_boston[['ZCTA5CE10', 'zip_code', 'PC_NAME', 'COUNTY', 'geometry', 'pct_under_5', 'pct_over_65', 'median_household_income', 'lst_mean', 'ndvi_mean', 'hospitalscount']].copy()
boston_heat_vulnerable.head()
| ZCTA5CE10 | zip_code | PC_NAME | COUNTY | geometry | pct_under_5 | pct_over_65 | median_household_income | lst_mean | ndvi_mean | hospitalscount | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1905 | 01905 | Lynn | Essex | MULTIPOLYGON (((243877.753 913824.638, 243872.... | 0.073556 | 0.098373 | 62927.0 | 31.375325 | 0.189563 | 0.0 |
| 1 | 1904 | 01904 | Lynn | Essex | POLYGON ((245700.484 914778.700, 245667.412 91... | 0.064589 | 0.139066 | 81788.0 | 28.854271 | 0.243954 | 1.0 |
| 2 | 1915 | 01915 | Beverly | Essex | MULTIPOLYGON (((250787.714 926889.372, 251155.... | 0.051427 | 0.167673 | 80586.0 | 27.588073 | 0.278216 | 1.0 |
| 3 | 2462 | 02462 | Newton Lower Falls | Middlesex | MULTIPOLYGON (((222058.060 897313.471, 222020.... | 0.043916 | 0.167747 | 115556.0 | 30.059721 | 0.273047 | 1.0 |
| 4 | 1760 | 01760 | Natick | Middlesex | POLYGON ((208131.535 893134.452, 208128.879 89... | 0.058416 | 0.155197 | 115446.0 | 28.718877 | 0.280098 | 1.0 |
#define functions for normalizing vulnerability indicators depending on direction (for some indicators, higher values indicate higher vulnerability. The opposite is true for other indicators)
def normalize_column(df, column):
'''
Input = data frame, column name
Output = data frame with additional column with normalized value of input column
'''
result = df.copy()
column_name = column + '_index'
df[column_name] = (df[column] - df[column].min()) / (df[column].max() - df[column].min())
return result
def normalize_column_reverse(df, column):
'''
Input = data frame, column name
Output = data frame with additional column with normalized value of input column subtracted from 1
'''
result = df.copy()
column_name = column + '_index'
df[column_name] = 1- ((df[column] - df[column].min()) / (df[column].max() - df[column].min()))
return result
#normalize for indicators where higher values indicate higher vulnerability
normalize_column(boston_heat_vulnerable, 'pct_under_5')
normalize_column(boston_heat_vulnerable, 'pct_over_65')
normalize_column(boston_heat_vulnerable, 'lst_mean')
#normalize for indicaotrs where higher values indicate lower vulnerability
normalize_column_reverse(boston_heat_vulnerable, 'median_household_income')
normalize_column_reverse(boston_heat_vulnerable, 'ndvi_mean')
normalize_column_reverse(boston_heat_vulnerable, 'hospitalscount')
boston_heat_vulnerable.head()
| ZCTA5CE10 | zip_code | PC_NAME | COUNTY | geometry | pct_under_5 | pct_over_65 | median_household_income | lst_mean | ndvi_mean | hospitalscount | pct_under_5_index | pct_over_65_index | lst_mean_index | median_household_income_index | ndvi_mean_index | hospitalscount_index | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1905 | 01905 | Lynn | Essex | MULTIPOLYGON (((243877.753 913824.638, 243872.... | 0.073556 | 0.098373 | 62927.0 | 31.375325 | 0.189563 | 0.0 | 0.383909 | 0.098373 | 0.520898 | 0.822459 | 0.499768 | 1.000000 |
| 1 | 1904 | 01904 | Lynn | Essex | POLYGON ((245700.484 914778.700, 245667.412 91... | 0.064589 | 0.139066 | 81788.0 | 28.854271 | 0.243954 | 1.0 | 0.337109 | 0.139066 | 0.371553 | 0.735439 | 0.317821 | 0.666667 |
| 2 | 1915 | 01915 | Beverly | Essex | MULTIPOLYGON (((250787.714 926889.372, 251155.... | 0.051427 | 0.167673 | 80586.0 | 27.588073 | 0.278216 | 1.0 | 0.268410 | 0.167673 | 0.296545 | 0.740985 | 0.203211 | 0.666667 |
| 3 | 2462 | 02462 | Newton Lower Falls | Middlesex | MULTIPOLYGON (((222058.060 897313.471, 222020.... | 0.043916 | 0.167747 | 115556.0 | 30.059721 | 0.273047 | 1.0 | 0.229213 | 0.167747 | 0.442963 | 0.579642 | 0.220502 | 0.666667 |
| 4 | 1760 | 01760 | Natick | Middlesex | POLYGON ((208131.535 893134.452, 208128.879 89... | 0.058416 | 0.155197 | 115446.0 | 28.718877 | 0.280098 | 1.0 | 0.304888 | 0.155197 | 0.363533 | 0.580150 | 0.196915 | 0.666667 |
#calculate vulnerability score, first just by adding together without a weighting scheme
boston_heat_vulnerable['heat_vulnerability'] = boston_heat_vulnerable['pct_under_5_index'] + boston_heat_vulnerable['pct_over_65_index'] + boston_heat_vulnerable['lst_mean_index'] + boston_heat_vulnerable['median_household_income_index'] + boston_heat_vulnerable['ndvi_mean_index'] + boston_heat_vulnerable['hospitalscount_index']
boston_heat_vulnerable.head()
| ZCTA5CE10 | zip_code | PC_NAME | COUNTY | geometry | pct_under_5 | pct_over_65 | median_household_income | lst_mean | ndvi_mean | hospitalscount | pct_under_5_index | pct_over_65_index | lst_mean_index | median_household_income_index | ndvi_mean_index | hospitalscount_index | heat_vulnerability | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1905 | 01905 | Lynn | Essex | MULTIPOLYGON (((243877.753 913824.638, 243872.... | 0.073556 | 0.098373 | 62927.0 | 31.375325 | 0.189563 | 0.0 | 0.383909 | 0.098373 | 0.520898 | 0.822459 | 0.499768 | 1.000000 | 3.325407 |
| 1 | 1904 | 01904 | Lynn | Essex | POLYGON ((245700.484 914778.700, 245667.412 91... | 0.064589 | 0.139066 | 81788.0 | 28.854271 | 0.243954 | 1.0 | 0.337109 | 0.139066 | 0.371553 | 0.735439 | 0.317821 | 0.666667 | 2.567654 |
| 2 | 1915 | 01915 | Beverly | Essex | MULTIPOLYGON (((250787.714 926889.372, 251155.... | 0.051427 | 0.167673 | 80586.0 | 27.588073 | 0.278216 | 1.0 | 0.268410 | 0.167673 | 0.296545 | 0.740985 | 0.203211 | 0.666667 | 2.343492 |
| 3 | 2462 | 02462 | Newton Lower Falls | Middlesex | MULTIPOLYGON (((222058.060 897313.471, 222020.... | 0.043916 | 0.167747 | 115556.0 | 30.059721 | 0.273047 | 1.0 | 0.229213 | 0.167747 | 0.442963 | 0.579642 | 0.220502 | 0.666667 | 2.306734 |
| 4 | 1760 | 01760 | Natick | Middlesex | POLYGON ((208131.535 893134.452, 208128.879 89... | 0.058416 | 0.155197 | 115446.0 | 28.718877 | 0.280098 | 1.0 | 0.304888 | 0.155197 | 0.363533 | 0.580150 | 0.196915 | 0.666667 | 2.267350 |
Weighted Vulnerability: I chose to set land surface temperature as 50% of heat vulnerability, and all other indicators equally at 10% each.
#calculate weighted vulnerability
boston_heat_vulnerable['weighted_heat_vulnerability'] = (0.1 * boston_heat_vulnerable['pct_under_5_index']) + (0.1 * boston_heat_vulnerable['pct_over_65_index']) + (0.5 * boston_heat_vulnerable['lst_mean_index']) + (0.1 * boston_heat_vulnerable['median_household_income_index']) + (0.1 * boston_heat_vulnerable['ndvi_mean_index']) + (0.1 * boston_heat_vulnerable['hospitalscount_index'])
boston_heat_vulnerable.head()
| ZCTA5CE10 | zip_code | PC_NAME | COUNTY | geometry | pct_under_5 | pct_over_65 | median_household_income | lst_mean | ndvi_mean | hospitalscount | pct_under_5_index | pct_over_65_index | lst_mean_index | median_household_income_index | ndvi_mean_index | hospitalscount_index | heat_vulnerability | weighted_heat_vulnerability | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1905 | 01905 | Lynn | Essex | MULTIPOLYGON (((243877.753 913824.638, 243872.... | 0.073556 | 0.098373 | 62927.0 | 31.375325 | 0.189563 | 0.0 | 0.383909 | 0.098373 | 0.520898 | 0.822459 | 0.499768 | 1.000000 | 3.325407 | 0.540900 |
| 1 | 1904 | 01904 | Lynn | Essex | POLYGON ((245700.484 914778.700, 245667.412 91... | 0.064589 | 0.139066 | 81788.0 | 28.854271 | 0.243954 | 1.0 | 0.337109 | 0.139066 | 0.371553 | 0.735439 | 0.317821 | 0.666667 | 2.567654 | 0.405387 |
| 2 | 1915 | 01915 | Beverly | Essex | MULTIPOLYGON (((250787.714 926889.372, 251155.... | 0.051427 | 0.167673 | 80586.0 | 27.588073 | 0.278216 | 1.0 | 0.268410 | 0.167673 | 0.296545 | 0.740985 | 0.203211 | 0.666667 | 2.343492 | 0.352967 |
| 3 | 2462 | 02462 | Newton Lower Falls | Middlesex | MULTIPOLYGON (((222058.060 897313.471, 222020.... | 0.043916 | 0.167747 | 115556.0 | 30.059721 | 0.273047 | 1.0 | 0.229213 | 0.167747 | 0.442963 | 0.579642 | 0.220502 | 0.666667 | 2.306734 | 0.407859 |
| 4 | 1760 | 01760 | Natick | Middlesex | POLYGON ((208131.535 893134.452, 208128.879 89... | 0.058416 | 0.155197 | 115446.0 | 28.718877 | 0.280098 | 1.0 | 0.304888 | 0.155197 | 0.363533 | 0.580150 | 0.196915 | 0.666667 | 2.267350 | 0.372148 |
#plot unweighted vulnerability
heat_vuln_plot = boston_heat_vulnerable.plot(column='heat_vulnerability',
figsize=(11,9),
cmap='RdYlBu_r',
edgecolor='grey',
linewidth=0.5,
legend=True)
cx.add_basemap(heat_vuln_plot,
crs=zcta_boston.crs,
source=cx.providers.CartoDB.Voyager)
plt.title('Vulnerability to extreme heat in Boston MPO')
Text(0.5, 1.0, 'Vulnerability to extreme heat in Boston MPO')
#plot weighted vulnerability
heat_vuln_plot = boston_heat_vulnerable.plot(column='weighted_heat_vulnerability',
figsize=(11,9),
cmap='RdYlBu_r',
edgecolor='grey',
linewidth=0.5,
legend=True)
cx.add_basemap(heat_vuln_plot,
crs=zcta_boston.crs,
source=cx.providers.CartoDB.Voyager)
plt.title('Weighted Vulnerability to Heat in Boston MPO')
Text(0.5, 1.0, 'Weighted Vulnerability to Heat in Boston MPO')
#round heat vulnerability score to 2 decimal points to clean up output of interactive map
boston_heat_vulnerable['weighted_heat_vulnerability'] = boston_heat_vulnerable['weighted_heat_vulnerability'].round(decimals=2)
#use folium to make an interactive map
#center of map and zoom level
m = folium.Map([42.3601, -71.0589], zoom_start=10)
#basemap
folium.TileLayer('CartoDB positron',name="Light Map",control=False).add_to(m)
#choropleth map based on weighted heat vulnerability score
choropleth = folium.Choropleth(
geo_data=zcta_boston,
data=boston_heat_vulnerable,
columns=['ZCTA5CE10', 'weighted_heat_vulnerability'],
key_on="feature.properties.ZCTA5CE10",
fill_color='OrRd',
legend_name='Weighted Heat Vulnerability Score',
name='Heat Vulnerability',
show=True,
).add_to(m)
folium.LayerControl(collapsed=False).add_to(m)
#add a layer that provides information about zip code, heat vulnerability, and town name when mouse hovers over ZCTA
heat = folium.features.GeoJson(
boston_heat_vulnerable,
style_function=lambda x: {
'fillColor': 'yellow',
'color': 'black',
'weight': 0.3,
'fillOpacity':0.0
},
highlight_function=lambda x: {
'fillOpacity':0.5
}, control=False,
tooltip=folium.features.GeoJsonTooltip(
fields=['zip_code', 'PC_NAME', 'weighted_heat_vulnerability'],
aliases=['Zip Code:', 'City or Town Name:', 'Weighted Heat Vulnerability Score (range is from 0.2-0.8):'],
style=("background-color: white; color: #333333; font-family: arial; font-size: 12px; padding: 10px;")))
m.add_child(heat)
m.keep_in_front(heat)
m